我正在从Google代码类学习python.我正在尝试练习.
def front_x(words):
x_list, ord_list = []
for word in words:
if word[0] == 'x':
x_list.append(word)
else:
ord_list.append(word)
return sorted(x_list) + sorted(ord_list)
Run Code Online (Sandbox Code Playgroud)
我相信错误是因为在一行上初始化两个空列表而引发的.如果在单独的行上初始化它们,则不会再发生错误.这是什么原因?
Mar*_*ers 36
您正在尝试使用元组赋值:
x_list, ord_list = []
Run Code Online (Sandbox Code Playgroud)
你可能想要使用多个赋值:
x_list = ord_list = []
Run Code Online (Sandbox Code Playgroud)
这不符合你的期望; 请改用以下内容:
x_list, ord_list = [], []
Run Code Online (Sandbox Code Playgroud)
或者,最好的是:
x_list = []
ord_list = []
Run Code Online (Sandbox Code Playgroud)
当使用以逗号分隔的变量名列表时,Python期望在右侧有一系列与数字变量匹配的表达式; 以下也是合法的:
two_lists = ([], [])
x_list, ord_list = two_lists
Run Code Online (Sandbox Code Playgroud)
这称为元组解包.如果,另一方面,您尝试使用具有多种分配一个文字(空单x_list = ord_list = []),那么这两个x_list和ord_list将指向相同的列表,并通过一个变量所做的任何更改将在其他变量可见:
>>> x_list = ord_list = []
>>> x_list.append(1)
>>> x_list
[1]
>>> ord_list
[1]
Run Code Online (Sandbox Code Playgroud)
更好地保持清晰,并使用两个单独的分配,给每个变量自己的空列表.