簡體   English   中英

Python - 操作列表以創建另一個列表

[英]Python - manipulating lists to create another list

我有許多長度相等的列表,比如4,但這可能會改變。 我想要做的是組合這些列表,以便將每個列表的第一項item [0]組合起來形成一個新列表。 與項目[1],項目[2]等類似。這看起來很簡單,但我如何確保列表名稱(即slide1)是從第一個列表(list1)動態創建的。

即我想離開這個:

list1 = ['slide1','slide2','slide3','slide4']
list2 = [1,2,3,4]
list3 = ['banana', 'apple', 'pear', 'orange']

對此:

slide1 = ['slide1',1,'banana']
slide2 = ['slide2',2,'apple']
slide3 = ['slide3',3,'pear']
slide4 = ['slide4',4,'orange']

我需要這樣做的原因是隨后將這些列表輸入數據庫。 有線索嗎? 我想我知道如何進行for循環,但我仍然堅持創建'動態'列表名稱。 我應該使用字典嗎?

先謝謝您的幫助!

很簡單:

lst = zip(list1, list2, list3)

print(lst[0])
>>> ('slide1', 1, 'banana')

# in case you need a list, not a tuple
slide1 = list(lst[0])

您不希望即時創建變量名稱。

實際上,你不應該首先使用list1, list2, list3 ,而應該使用一個名為lists

>>> lists = [['slide1','slide2','slide3','slide4'], [1,2,3,4], ['banana', 'apple', 'pear', 'orange']]
>>> slides = [list(slide) for slide in zip(*lists)]
>>> slides
[['slide1', 1, 'banana'], ['slide2', 2, 'apple'], ['slide3', 3, 'pear'], ['slide4', 4, 'orange']]

現在,您使用lists[0]而不是list1 ,而不是slide1 ,您使用slides[0] 這樣更清潔,更易於維護,並且可以擴展。

如果列表非常大並且您只需要遍歷新幻燈片,則使用itertools.izip將更有效。

import itertools
for x in itertools.izip(list1, list2, list3):
    print x

一個直接的答案是,你似乎想要一個帶有list1元素的dict作為鍵,可以通過以下方式實現:

dict( zip(list1, list(zip(list2, list3))) )

但是,Tim說你應該檢查你的數據結構是正確的......

暫無
暫無

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

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