我正在从Google code类学习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)
我认为抛出这个错误是因为在一行上初始化了两个空列表。如果在单独的行上初始化它们,则不会出现更多错误。这就是原因吗?
发布于 2012-12-15 19:38:37
您正在尝试使用元组赋值:
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]
最好保持清晰,并使用两个单独的赋值,为每个变量提供自己的空列表。
发布于 2012-12-15 19:38:27
更改线路
x_list, ord_list = []
to
x_list, ord_list = [], []
发布于 2016-09-12 12:50:15
函数的返回类型与函数中的预期值不匹配...
检查函数返回的变量数和期望的变量数
https://stackoverflow.com/questions/13891813
复制相似问题