tgctg2020 发表于 2020-12-16 19:26:26

这样为什么不行?

>>> listn=
>>> listn

>>> listn.reverse()
>>> listn

>>> listn.sort(reverse=True)
>>> listn

>>> listn.sort(reverse=False)
>>> listn

>>> listn.sort(sort=True)
Traceback (most recent call last):
File "<pyshell#37>", line 1, in <module>
    listn.sort(sort=True)
TypeError: 'sort' is an invalid keyword argument for sort()
>>>

最后为什么会报错了呢??list.sort(reverse=True)合法,为什么换成(sort=True)就BUG了呢?

昨非 发表于 2020-12-16 19:34:36

本帖最后由 昨非 于 2020-12-16 19:37 编辑

因为你调用的sort是列表的方法
而reverse则是sort方法的参数

这完全是两回事

基础差的话建议先补一下基础吧,学习是个循序渐进的过程
这部分语法可以参考这个:
https://www.runoob.com/python3/python3-att-list-sort.html

tgctg2020 发表于 2020-12-16 19:41:43

昨非 发表于 2020-12-16 19:34
因为你调用的sort是列表的方法
而reverse则是sort方法的参数




# 获取列表的第二个元素
def takeSecond(elem):
    return elem

# 列表
random = [(2, 2), (3, 4), (4, 1), (1, 3)]

# 指定第二个元素排序
random.sort(key=takeSecond)

# 输出类别
print ('排序列表:', random)
以上实例输出结果如下:
排序列表:[(4, 1), (2, 2), (1, 3), (3, 4)]

tgctg2020 发表于 2020-12-16 19:42:43

tgctg2020 发表于 2020-12-16 19:41
# 获取列表的第二个元素
def takeSecond(elem):
    return elem


这个就看不懂了...为什么会出现这么个排序?

昨非 发表于 2020-12-16 19:46:44

tgctg2020 发表于 2020-12-16 19:42
这个就看不懂了...为什么会出现这么个排序?

我发的那个链接里有这部分语法讲解
大概意思就是
sort方法的key参数可以自定义
意味着这个排序的规则可以由你自己定

这里规则定位一个函数takeSecind,它的返回值是参数的第二个元素
对应列表里嵌套的元组

就是说,按照列表里元组第二个数的大小对列表里每个元组进行排序

昨非 发表于 2020-12-16 20:27:13

解决了记得设置最佳答案

tgctg2020 发表于 2020-12-16 21:38:28

昨非 发表于 2020-12-16 19:46
我发的那个链接里有这部分语法讲解
大概意思就是
sort方法的key参数可以自定义


这里的takeSecond的意思是这4个元组中的第2个元素的意思吗??如果是这样.那好像就明白了.

昨非 发表于 2020-12-16 21:48:01

tgctg2020 发表于 2020-12-16 21:38
这里的takeSecond的意思是这4个元组中的第2个元素的意思吗??如果是这样.那好像就明白了.

这是一个函数,(一个排序规则)
函数的返回值是其参数的第二个元素
简单来说就是依据元组的第二个值的大小对元组在列表中的顺序进行排序
页: [1]
查看完整版本: 这样为什么不行?