如何解决ValueError 使用 itertools.zip_longest (fillvalue)?
import itertools
data_1 = [(1,'1','2','3'),(2,'4','5','6')]
data_2 = [(1,'7','8','9')]
for (a,b) in itertools.zip_longest(data_1,data_2,fillvalue="----"):
p = (a[0],a[1],a[2],a[3],b[0],b[1],b[2],b[3])
print("p",p)
value1 = float(p[1])+float(p[2])+float(p[3])
print("value1",value1)
我的第一个问题是,当我使用 fillvalue="----" 时,它就起作用了。为什么当我使用 fillvalue="-" 时它不起作用?
我的第二个问题是,当我在行 value1 下方添加额外的行 (value2 = float(p[4])+float(p[5])+float(p[6])) 时,它给出以下内容错误信息:
value2 = float(p[4])+float(p[5])+float(p[6]) p (2,'6','-','-') 值错误:无法将字符串转换为浮点数:'-'
解决方法
首先,想想“zip_longest”的作用。它类似于 zip()
函数,但如果到达最短迭代器的末尾则不会终止,而是继续最长迭代器的末尾并用 fillvalue
填充较短的迭代器。
指定 fillvalue="-"
时出现的错误:
您的第一个迭代器是 data_1
有一个项目,第二个是 data_2
有两个项目。 b
解包后从 data_2
获取项目。在第二次迭代中,它得到 fillvalue
,即 "-"
。关键是 "-"
现在实际上是你的整个 b
,而且只有一个字符,所以你不能做 b[1]
、b[2]
等等。
我想您对第二个问题有所了解。在第二次迭代中(当您使用 "----"
时),虽然您可以获得项目 p[4]
、p[5]
和...但它无法将 "-"
转换为浮动。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。