Python 列表理解值错误:要解压缩的值太多
我有一个生成两项列表的过程,即Python 列表理解值错误:要解压缩的值太多,python,Python,我有一个生成两项列表的过程,即[日期戳,时间戳] 如果我将其放入列表中: [(ds,ts) for ds,ts in process] 我期望的结果是: [(ds,ts), (ds,ts), (ds,ts)] 我得到的是ValueError:太多的值无法解包 这是因为for循环迭代到流程返回的列表中: for ds,ts in [datestamp, timestamp] 不分配ds=datestamp,ts=timestamp,而是在每个字母上迭代。。。如果这样做有效,它将给出(d,t)
[日期戳,时间戳]
如果我将其放入列表中:
[(ds,ts) for ds,ts in process]
我期望的结果是:
[(ds,ts), (ds,ts), (ds,ts)]
我得到的是ValueError:太多的值无法解包
这是因为for
循环迭代到流程返回的列表中:
for ds,ts in [datestamp, timestamp]
不分配ds=datestamp
,ts=timestamp
,而是在每个字母上迭代。。。如果这样做有效,它将给出(d,t)
,(a,i)
,(t,m)
,(e,e)
等
所以我知道怎么了。。。但不是如何让它工作!
(是的,这确实让人觉得很傻……我知道答案会很简单。这很有效:
process = [[1,2],[3,4],[5,6]]
a = []
for ds, ts in process:
print(ds, ts)
a.append((ds, ts))
以及
z = [(ds, ts) for (ds, ts) in process]
q = [(ds, ts) for ds, ts in process]
如果您遇到“ValueError:太多值无法解包”异常,则进程必须生成包含两个以上项的iterables
展开列表理解并打印except套件中的相关内容,查看可能出现的问题,然后返回到源代码
process = [[1,2],[3,4],[5,6], [7,8,9]]
a = []
try:
for thing in process:
ds, ts = thing
a.append((ds, ts))
except ValueError as e:
print(e, '\t', thing)
这项工作:
process = [[1,2],[3,4],[5,6]]
a = []
for ds, ts in process:
print(ds, ts)
a.append((ds, ts))
以及
z = [(ds, ts) for (ds, ts) in process]
q = [(ds, ts) for ds, ts in process]
如果您遇到“ValueError:太多值无法解包”异常,则进程必须生成包含两个以上项的iterables
展开列表理解并打印except套件中的相关内容,查看可能出现的问题,然后返回到源代码
process = [[1,2],[3,4],[5,6], [7,8,9]]
a = []
try:
for thing in process:
ds, ts = thing
a.append((ds, ts))
except ValueError as e:
print(e, '\t', thing)
您需要调试。列表中必须有一些项不是您期望的成对项
找到它们的一种方法是:
problems = [(idx, value) for idx,value in enumerate(process) if len(value)!=2]
这将为您提供一个问题索引列表和列表中的项目
如果出现错误(例如,TypeError
,因为值
对象没有\uuuu len\uuuu
方法),则将其更改为:
problems = [(idx, value) for idx,value in enumerate(process) if not hasattr(value, '__len__')]
您需要调试。列表中必须有一些项不是您期望的成对项
找到它们的一种方法是:
problems = [(idx, value) for idx,value in enumerate(process) if len(value)!=2]
这将为您提供一个问题索引列表和列表中的项目
如果出现错误(例如,TypeError
,因为值
对象没有\uuuu len\uuuu
方法),则将其更改为:
problems = [(idx, value) for idx,value in enumerate(process) if not hasattr(value, '__len__')]
您是否在寻找[(x[0],x[1])for x in process]
?在每次迭代中,您都有一个包含两个项目的列表对象,因此您只需要索引到列表中,这样您就有了一个包含两个元素的列表,并希望将其转换为包含两个元素的元组?那么my\u tuple=tuple(my\u list)呢
?请发布流程的内容
。请尝试[(ds,ts)用于ds,ts的邮政编码(datestamp,timestap)]
谢谢您的建议。我随后决定采用一种完全不同的方法,不涉及此列表理解问题。您是否希望[(x[0],x[1])用于流程中的x]
?在每次迭代中,您都有一个包含两个项目的列表对象,因此您只需要索引到列表中,这样您就有了一个包含两个元素的列表,并希望将其转换为包含两个元素的元组?如何my\u tuple=tuple(my\u list)
?请发布过程的内容
。尝试[(ds,ts)在zip中输入ds,ts)(datestamp,timestap)
谢谢你的建议。我随后决定采用一种完全不同的方法,不涉及这个列表理解问题。