簡體   English   中英

如何將 python 列表轉換為 1/2 行的元組列表?

[英]how to transform a python list to a list of tuple in 1/2 lines?

輸入: ['a','b','c','d','e']

Output: [('a','b'),('c','d'),('e')]

我怎樣才能在 1 或 2 行代碼中做到這一點?

目前我有這個:

def tuple_list(_list):
    final_list = []
    temp = []
    for idx, bat in enumerate(_list):
        temp.append(bat)
        if idx%2 == 1:
            final_list.append(temp)
            temp = []
    if len(temp) > 0: final_list.append(temp)
    return final_list
        
tuple_list(['a','b','c','d','e'])

您可以使用列表理解。 首先,我們將有一個步長為 2 的范圍。使用它,我們將從輸入列表中獲取適當的切片以獲得所需的結果:

lst = ['a','b','c','d','e']
result = [tuple(lst[i:i+2]) for i in range(0, len(lst), 2)]

試試這個列表理解

x = ['a','b','c','d','e']
[(x[i],x[i+1]) for i in range(0,len(x)-1) if i%2==0]
x = ['a','b','c','d','e']
y = [tuple(x[i:i+2]) for i in range(0,len(x),2)]

您可以通過在列表上移動大小為 2 的滑動 window 來對數組進行切片。

range(start, end, step) 可幫助您逐步移動 window(在您的情況下為 2),而切片可幫助您從較大的列表中創建較小的列表。

所有放入列表理解的內容都會為您提供所需的 output。

您可以使用內置的 iter() function 創建一個迭代器,並將其傳遞給內置的 zip() function。

l = ['a','b','c','d','e']
i = iter(l)
zip(i, i)

如果你想按 3 分組,你可以將它傳遞 3 次給 zip()

zip(i, i, i)

暫無
暫無

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

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