簡體   English   中英

具有元組和數組的多變量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

你可以這樣

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

您只需要一個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)

基本上,for語句一個接一個地遍歷內容,因此在每次迭代中,都有一個值可用。

使用時

    for i,c,t in Index, Cols, Temp: 

您試圖將一個值分解為三個變量,這就是為什么要獲取太多的值來解壓ValueError的原因。由於您似乎想對單個迭代使用三個不同的列表,因此存在一個函數zip(),izip()和izip_longest ()可以用於此目的。

zip()返回一個元組列表,其中第i個元組包含每個列表中的第i個元素,這些元素作為參數傳遞給zip()。 返回的列表的長度被截斷為所傳遞列表的長度。

    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。

希望能幫助到你。 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM