如何从python的现有列表中创建新的元素列表?

时间:2015-02-18 17:11:01

标签: python list loops

我在下面有一个列表。我需要用它来创建一个只有COUNTRY名称的新列表。 请帮我转到循环X,以获得国家/地区名称

列表
x= [["UK", "LONDON", "EUROPE"],["US", "WASHINGTON", "AMERICA"],["EG", "CAIRO", "AFRICA"],["JP","TOKYO","ASIA"]]

结果应该是

UK
US
EG
JP

5 个答案:

答案 0 :(得分:4)

你有两种方式

使用for循环

countries = []

for e in x:
 countries.append(e[0])

或列表推导

countries = [e[0] for e in x]

答案 1 :(得分:2)

最可读的方式可能是:

>>> 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']

这个list comprehension清楚地表明data中每个项目中的三个值是什么,哪个将在输出中,而索引0并不能告诉读者很多。

答案 2 :(得分:1)

由于城市LONDONWASHINGTONCAIROTOKYO出现在列表项的第1个位置(从0开始)。因此,按列表压缩从列表项中获取所有第1项。

e.g。

>>> 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']

答案 3 :(得分:0)

如果您发现自己假设数据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]

答案 4 :(得分:0)

您还可以解压缩列表并将其追加到新列表:

x= [["UK", "LONDON", "EUROPE"],["US", "WASHINGTON", "AMERICA"],["EG", "CAIRO", "AFRICA"],["JP","TOKYO","ASIA"]]

countries = []

for a,b,c in x:
    countries.append(a)