带有元组和数组的多变量 for 循环
Multi-variable for loop with a tuple and a array
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'
.
.
.
.
您需要使用 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
你只需要一个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)
you can do like this
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
基本上,for 语句会逐个迭代内容,因此在每次迭代中,一个值可用。
使用时
for i,c,t in Index, Cols, Temp:
您正在尝试将一个值解包为三个变量,这就是为什么您得到 太多值无法解包 ValueError的原因。因为您似乎想对一个变量使用三个不同的列表迭代,存在函数 zip()、izip() 和 izip_longest() 可用于此目的。
zip() returns 一个元组列表,其中第 i 个元组包含作为参数传递给 zip() 的每个列表中的第 i 个元素。
返回列表的长度被截断为传递的列表的长度。
for i,c,t in zip(Index, Cols, Temp):
print i,c,t
izip() 的工作原理与 zip() 相同,但它 returns 是一个迭代器,可以遍历一次,并且与单次遍历的 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,如果可迭代对象的长度不均匀。
希望对您有所帮助。 :)
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'
.
.
.
.
您需要使用 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
你只需要一个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)
you can do like this
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
基本上,for 语句会逐个迭代内容,因此在每次迭代中,一个值可用。
使用时
for i,c,t in Index, Cols, Temp:
您正在尝试将一个值解包为三个变量,这就是为什么您得到 太多值无法解包 ValueError的原因。因为您似乎想对一个变量使用三个不同的列表迭代,存在函数 zip()、izip() 和 izip_longest() 可用于此目的。
zip() returns 一个元组列表,其中第 i 个元组包含作为参数传递给 zip() 的每个列表中的第 i 个元素。 返回列表的长度被截断为传递的列表的长度。
for i,c,t in zip(Index, Cols, Temp):
print i,c,t
izip() 的工作原理与 zip() 相同,但它 returns 是一个迭代器,可以遍历一次,并且与单次遍历的 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,如果可迭代对象的长度不均匀。
希望对您有所帮助。 :)