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)