![](/img/trans.png)
[英]Form new lists from elements in an existing list and assign a worksheet name
[英]How to make a new list of first elements from existing list of lists
我在下面有一個清單。 我需要用它來創建一個只有國家/地區名稱的新列表。 如何循環x
以獲得國家/地區名稱列表?
x = [["UK", "LONDON", "EUROPE"],
["US", "WASHINGTON", "AMERICA"],
["EG", "CAIRO", "AFRICA"],
["JP", "TOKYO", "ASIA"]]
結果應該是這樣的
UK
US
EG
JP
你有兩種方法
使用 for 循環
countries = []
for e in x:
countries.append(e[0])
或使用列表推導式,這在大多數情況下是更好的選擇
countries = [e[0] for e in x]
此外,如果您的數據源是一個生成器(在這種情況下不是),或者如果您對每個元素進行一些昂貴的處理(也不是這種情況),您可以通過更改方括號來使用generator expression
[]
為括號()
countries = (e[0] for e in x)
這將按需計算元素,如果數據源太長或生成器也將減少與列表理解相比的內存占用。
最易讀的方式可能是:
>>> data = [["UK", "LONDON", "EUROPE"],
["US", "WASHINGTON", "AMERICA"],
["EG", "CAIRO", "AFRICA"],
["JP","TOKYO","ASIA"]]
>>> countries = [country for country, city, continent in data]
>>> countries
['UK', 'US', 'EG', 'JP']
這個列表推導式清楚地說明了data
中每個項目中的三個值是什么,以及哪些將在輸出中,而索引0
根本沒有告訴讀者太多。
由於城市LONDON
, WASHINGTON
, CAIRO
, TOKYO
出現在列表項的第 1 位(從 0 開始)。 因此,通過列表壓縮從列表項中獲取所有第一項。
例如
>>> x= [["UK", "LONDON", "EUROPE"],["US", "WASHINGTON", "AMERICA"],["EG", "CAIRO", "AFRICA"],["JP","TOKYO","ASIA"]]
>>> [i[1] for i in x]
['LONDON', 'WASHINGTON', 'CAIRO', 'TOKYO']
>>>
國家相同:
>>> [i[0] for i in x]
['UK', 'US', 'EG', 'JP']
如果您發現自己假設數據x
始終包含[COUNTRY, CITYNAME, CONTINENT]
形式的列表,您可以從x
每個列表中檢索每個第一項,如下所示:
countries = []
for country, cityname, continent in x:
countries.append(country)
您可以使用列表理解縮短上面的內容。
>>> countries = [country for country, cityname, continent in x]
當然,您可以通過索引訪問該值。
>>> countries = [lst[0] for lst in x]
您還可以解壓縮列表並附加到新列表:
x= [["UK", "LONDON", "EUROPE"],["US", "WASHINGTON", "AMERICA"],["EG", "CAIRO", "AFRICA"],["JP","TOKYO","ASIA"]]
countries = []
for a,b,c in x:
countries.append(a)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.