Python 如何从现有列表列表中创建第一个元素的新列表

Python 如何从现有列表列表中创建第一个元素的新列表,python,list,loops,Python,List,Loops,我有下面的清单。我需要用它来创建一个只有国家名称的新列表。 如何循环x以获得国家名称列表 x = [["UK", "LONDON", "EUROPE"], ["US", "WASHINGTON", "AMERICA"], ["EG", "CAIRO", "AFRICA"], ["

我有下面的清单。我需要用它来创建一个只有国家名称的新列表。 如何循环
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]
此外,如果您的数据源是一个生成器(在本例中不是),或者您正在对每个元素进行一些昂贵的处理(在本例中也不是),则可以通过更改括号
()
的方括号
[]
来使用
生成器表达式


这将按需计算元素,如果数据源太长或生成器与列表理解相比也会减少内存占用。

因为城市
伦敦
华盛顿
开罗
东京
位于列表项的第一位(从0开始)。因此,通过列表压缩从列表项中获取所有第一项

>>> countries = [country for country, cityname, continent in x]
e、 g

各国也一样:

>>> [i[0] for i in x]
['UK', 'US', 'EG', 'JP']

最具可读性的方式可能是:

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

这清楚地说明了
数据中每个项目中的三个值是什么,以及哪些值将出现在输出中,而索引
0
根本不能告诉读者多少信息。

如果您可以假设数据
x
总是以
[国家、城市名称、大陆]
的形式包含列表,您可以从
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)

这回答了你的问题吗?
x= [["UK", "LONDON", "EUROPE"],["US", "WASHINGTON", "AMERICA"],["EG", "CAIRO", "AFRICA"],["JP","TOKYO","ASIA"]]

countries = []

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