我有一个将 2 项列表生成为[datestamp, timestamp].
如果我将其放入列表理解中:
[(ds,ts) for ds,ts in process]
Run Code Online (Sandbox Code Playgroud)
我想要的结果是:
[(ds,ts), (ds,ts), (ds,ts)]
Run Code Online (Sandbox Code Playgroud)
我得到的是ValueError: too many values to unpack.
这是因为for循环迭代到进程返回的列表中:
for ds,ts in [datestamp, timestamp]
Run Code Online (Sandbox Code Playgroud)
不分配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))
Run Code Online (Sandbox Code Playgroud)
也
z = [(ds, ts) for (ds, ts) in process]
q = [(ds, ts) for ds, ts in process]
Run Code Online (Sandbox Code Playgroud)
如果您遇到'ValueError: too many values to unpack'异常,则流程必须生成具有两个以上项目的可迭代对象。
展开列表理解并处理异常- 在 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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1581 次 |
| 最近记录: |