有一些内置函数直接修改对象并返回None。一个示例是sort()
list
方法,其中对象本身被修改,即排序,但返回None
。
我的问题是,我如何访问list(T).sort()
,其中T是一个元组说T =(5,1,2,3,4,5),而没有先将list(T)
赋给显式变量?
答案 0 :(得分:2)
元组是不可变的,因此你不能真正地改变元素的顺序。这就是tuple.sort
函数不存在的原因。所以你有两种选择。
使用已排序的元素
将元组转换为允许对其元素进行排序的对象(例如list
s)。
所以,如果你有一个元组,你可以简单地做
sorted(tupleObject)
获取已排序项目的新列表。然后,如果需要,您可以将该列表对象转换为元组,如此
tuple(sorted(tupleObject))
答案 1 :(得分:2)
在Python中,传统意义上没有变量;有名称,指向对象。对象具有值和类型,名称只是引用对象的一种方式。
因此,名称本身没有意义 - 名称仅在指向对象时使用,否则使用对象"暂时"没有名字。
你的例子中发生了什么。当您创建list(T)
并且不将其分配给名称时,您无法再引用它。
要解决您的实际问题,您可以直接在元组上使用sorted()
,但请注意它会返回一个列表:
>>> foo = sorted((0,1,4,3,5))
>>> foo
[0, 1, 3, 4, 5]
您仍然无法访问原始未排序的元组(除非您先将其指定给名称)。
答案 2 :(得分:0)
而不是list.sort
,请使用内置的sorted
。
sorted(list(T))