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)
谢谢你的建议。我随后决定采用一种完全不同的方法,不涉及这个列表理解问题。