我是python /编程的新手。这是关于在python中使用函数的首要问题。
如果我有一个名为myList的列表。
myList.sort()
sorted(myList)
请注意,使用两个函数之间的区别是,一个函数是将函数应用于myList
,另一个函数是将myList
用作函数的参数。
我的问题是,每次使用函数时。
我已经很困惑了很长时间。感谢任何解释。
谢谢。
答案 0 :(得分:2)
list.sort和sorted(list)有两个大区别
list.sort()对列表进行原位排序,这意味着它将修改 清单。排序的函数不会修改原始列表,但会返回 排序列表
list.sort()仅适用于list(它是一种方法),但已排序的内置函数可以采用任何可迭代的对象。
请仔细阅读此useful documentation。
答案 1 :(得分:1)
sort()
是一个就地函数,而sorted()
将返回一个已排序的列表,但不会就地改变您的变量。以下说明了区别:
l = [1, 2, 1, 3, 2, 4]
l.sort()
print(l) --returns [1, 1, 2, 2, 3, 4]
l = [1, 2, 1, 3, 2, 4]
new_l = sorted(l)
print(new_l) -- returns [1, 1, 2, 2, 3, 4]
print(l) -- [1, 2, 1, 3, 2, 4]
如果要保持列表的原始顺序,请使用sorted
,否则可以使用sort()
。
答案 2 :(得分:1)
只有sorted
是函数-list.sort
是list
类型的方法。
诸如sorted
之类的功能不仅适用于特定类型。例如,您可以获得排序的list
,set
甚至是临时生成器。只有输出是具体的(您总是会得到一个新的list
),而不是输入。
诸如sort
之类的方法仅适用于保存它们的类型。例如,有一个list.sort
方法,但没有dict.sort
方法。即使对于方法名称相同的类型,切换它们也不明智-例如,set.copy
不能用于复制dict
。
区分两者的一种简单方法是,函数位于常规名称空间(例如模块)中。另一方面,方法仅存在于类及其实例内部。
sorted # function
list.sort # method
import math
math.sqrt # function
math.pi.as_integer_ratio # method
通常,Python通常将函数用于不可变动作,并将方法用于可变动作。例如,sorted
提供了一个 new 排序列表,使旧列表保持不变。 my_list.sort()
对现有列表进行排序,不提供新列表。
my_list = [4, 2, 3, 1]
print(sorted(my_list)) # prints [1, 2, 3, 4]
print(my_list) # prints [4, 2, 3, 1] - unchanged by sorted
print(my_list.sort()) # prints None - no new list produced
print(my_list) # prints [1, 2, 3, 4] - changed by sort