fish初 发表于 2021-7-20 17:22:50

用sorted()按与字母顺序相反的顺序打印一个列表的问题

请问:
        a = ['d','b','c']
        print(sorted(a).reverse())
1.为什么会返回None,而不是返回错误
2.这样的方式为什么不能使sorted()按与字母顺序相反的顺序打印一个列表

谢谢{:10_297:}

逃兵 发表于 2021-7-20 17:30:11

sorted(a)会返回一个倒转的列表
这个列表又可以执行reverse()方法,这个方法是直接作用于元列表的,会返回一个None
所以会打印一个None

青出于蓝 发表于 2021-7-20 17:31:01

a = ['d','b','c']
print(list(reversed(sorted(a))))
b=sorted(a)
b.reverse()
print(b)

suchocolate 发表于 2021-7-20 17:31:37

list.reverse()是在原列表基础上排序,不返回新列表。

青出于蓝 发表于 2021-7-20 17:33:11

reverse是直接修改对象的(直接将列表排序),会返回None
而revesed是将列表对象排序并且返回排序后的列表,这两个一定要区分
上面代码供参考
欢迎追问

fish初 发表于 2021-7-20 17:41:22

青出于蓝 发表于 2021-7-20 17:33
reverse是直接修改对象的(直接将列表排序),会返回None
而revesed是将列表对象排序并且返回排序后的列表 ...

请问为什么要加一个list()

fish初 发表于 2021-7-20 17:44:59

逃兵 发表于 2021-7-20 17:30
sorted(a)会返回一个倒转的列表
这个列表又可以执行reverse()方法,这个方法是直接作用于元列表的,会返回 ...


"sorted(a)会返回一个倒转的列表
这个列表又可以执行reverse()方法"您的这句话我懂了,但后半句不懂

青出于蓝 发表于 2021-7-20 18:31:44

fish初 发表于 2021-7-20 17:41
请问为什么要加一个list()

>>>print(reversed(a))
<list_reverseiterator object at 0x00000132E63D34E0>

<list_reverseiterator object at 0x00000132E63D34E0>为一个迭代器对象的内存地址,要转为列表

fish初 发表于 2021-7-20 19:10:52

青出于蓝 发表于 2021-7-20 18:31
>>>print(reversed(a))




谢谢您嘞

fish初 发表于 2021-7-20 21:53:21

suchocolate 发表于 2021-7-20 17:31
list.reverse()是在原列表基础上排序,不返回新列表。

谢谢
页: [1]
查看完整版本: 用sorted()按与字母顺序相反的顺序打印一个列表的问题