首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ValueError:需要大于0的值才能解包(python列表)

ValueError:需要大于0的值才能解包(python列表)
EN

Stack Overflow用户
提问于 2012-12-15 19:36:43
回答 3查看 60.6K关注 0票数 22

我正在从Google code类学习python。我正在做练习。

代码语言:javascript
复制
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)      

我认为抛出这个错误是因为在一行上初始化了两个空列表。如果在单独的行上初始化它们,则不会出现更多错误。这就是原因吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-12-15 19:38:37

您正在尝试使用元组赋值:

代码语言:javascript
复制
x_list, ord_list = []

您可能想要使用多个赋值:

代码语言:javascript
复制
x_list = ord_list = []

它将不会执行您期望的操作;请使用以下代码:

代码语言:javascript
复制
x_list, ord_list = [], []

或者,最好还是:

代码语言:javascript
复制
x_list = []
ord_list = []

当使用逗号分隔的变量名列表时,Python期望在右侧有一个表达式序列,该序列与数字变量相匹配;以下内容也是合法的:

代码语言:javascript
复制
two_lists = ([], [])
x_list, ord_list = two_lists

这就是所谓的元组解包。另一方面,如果您尝试使用具有一个空列表文字(x_list = ord_list = [])的多个赋值,则x_listord_list将指向同一列表,并且通过一个变量所做的任何更改将在另一个变量上可见:

代码语言:javascript
复制
>>> x_list = ord_list = []
>>> x_list.append(1)
>>> x_list
[1]
>>> ord_list
[1]

最好保持清晰,并使用两个单独的赋值,为每个变量提供自己的空列表。

票数 38
EN

Stack Overflow用户

发布于 2012-12-15 19:38:27

更改线路

代码语言:javascript
复制
x_list, ord_list = []

to

x_list, ord_list = [], []
票数 5
EN

Stack Overflow用户

发布于 2016-09-12 12:50:15

函数的返回类型与函数中的预期值不匹配...

检查函数返回的变量数和期望的变量数

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13891813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档