Cols = [(10,11),(8,9),(6,7),(4,5),(2,3),(0,1)]
Index = [1,2,3,4,5,6]
Temp = ['RT','85C','125C','175C','220C','260C']
for i,c,t in Index, Cols, Temp:
print(i,c,t)
我希望将i作为元组,c作为整数,t作为字符串。当我尝试上述内容时,我一直得到:
ValueError:要解压的值太多(预期3)
所以我尝试按照其他解决方案的建议:
x = [[(10,11),(8,9),(6,7),(4,5),(2,3),(0,1)], [1,2,3,4,5,6], ['RT','85C','125C','175C','220C','260C']]
for c,i,t in x:
print(i,c,t)
但也有同样的错误。我希望得到的是:
First loop:
i = 1
c = (10,11)
t = 'RT'
Second loop:
i = 2
c = (8,9)
t = '85C'
.
.
.
.
答案 0 :(得分:3)
您需要使用zip
函数迭代列表元素
for i,c,t in zip(Index, Cols, Temp):
print(i,c,t)
输出
1 (10, 11) RT
2 (8, 9) 85C
3 (6, 7) 125C
4 (4, 5) 175C
5 (2, 3) 220C
6 (0, 1) 260C
答案 1 :(得分:3)
你可以这样做
Cols = [(10,11),(8,9),(6,7),(4,5),(2,3),(0,1)]
Index = [1,2,3,4,5,6]
Temp = ['RT','85C','125C','175C','220C','260C']
loops_value = ['First','Second','Third','Fourth','Fifth','Sixth']
for j, i, c, t in zip(loops_value, Index, Cols, Temp):
print "%s loop" % j
print 'i = ', i
print 'j = ', c
print 'k = ', t
答案 2 :(得分:2)
您需要的只是zip()
Cols = [(10,11),(8,9),(6,7),(4,5),(2,3),(0,1)]
Index = [1,2,3,4,5,6]
Temp = ['RT','85C','125C','175C','220C','260C']
for i,c,t in zip(Index, Cols, Temp):
print(i,c,t)
答案 3 :(得分:2)
基本上,for语句逐个遍历内容,因此在每次迭代中,都有一个值可用。
使用时
for i,c,t in Index, Cols, Temp:
你试图将一个值解压缩为三个变量,这就是为什么你得到解压缩ValueError的值太多的原因。既然你似乎想要在一次迭代中使用三个不同的列表,那么就存在一个函数zip(),izip()和izip_longest()可以用于此目的。
zip()返回一个元组列表,其中第i个元组包含作为zip()参数传递的每个列表中的第i个元素。 返回的列表的长度将被截断为传递的列表的长度。
for i,c,t in zip(Index, Cols, Temp):
print i,c,t
izip()与zip()的作用相同,但它返回一个迭代器,可以遍历一次,与单遍历的zip()相比,它们很快。
from itertools import izip
for i,c,t in izip(Index, Cols, Temp):
print i,c,t
izip_longest()与zip()和izip()的工作方式相同,但如果迭代的长度不均匀,则默认值为None,但可以根据需要进行更新。
from itertools import izip_longest
for i,c,t in izip_longest(Index, Cols, Temp,fillvalue= 0):
print i,c,t
如果迭代的长度不均匀,则fillvalue参数是缺失值,即0。
希望它有所帮助。 :)