我从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)
我认为由于在一行上初始化两个空列表而引发错误。如果在单独的行上初始化它们,则不会再发生错误。这是什么原因?
答案 0 :(得分:35)
您正在尝试使用元组赋值:
x_list, ord_list = []
你可能打算使用多个作业:
x_list = ord_list = []
这不符合你的期望;请改用以下内容:
x_list, ord_list = [], []
或者,最好的是:
x_list = []
ord_list = []
当使用以逗号分隔的变量名列表时,Python期望在右侧有一系列与数字变量匹配的表达式;以下也是合法的:
two_lists = ([], [])
x_list, ord_list = two_lists
这称为元组解包。另一方面,如果您尝试使用一个空列表文字(x_list = ord_list = []
)进行多次分配,那么x_list
和ord_list
都将指向相同的列表,通过一个变量所做的任何更改都将在另一个变量上显示:
>>> x_list = ord_list = []
>>> x_list.append(1)
>>> x_list
[1]
>>> ord_list
[1]
更好地保持清晰,并使用两个单独的分配,为每个变量提供自己的空列表。
答案 1 :(得分:4)
更改行
x_list, ord_list = []
to
x_list, ord_list = [], []
答案 2 :(得分:0)
返回类型的函数与函数中预期的值不匹配...
检查从您期望的函数和变量返回的变量数