[英]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.