如何修改列表推导式,为元组中的国家元素添加'Made in'前缀?
问题描述
现有三个长度相同的列表makers、revenues和countries,需要创建一个由元组组成的新列表,满足以下要求:
- 每个元组取自三个列表相同索引位置的元素
- 元组的最后一个元素(国家)前需添加字符串
'Made in ',例如第一个元组应为('Toyota', 265, 'Made in Japan'),最后一个为('Ford', 156, 'Made in US') - 不能修改原有的三个列表
当前代码:
autos1 = [(makers, revenues, countries) for makers, revenues, countries in zip(makers, revenues, countries)]
运行结果:
[('Toyota', 265, 'Japan'), ('Volkswagen', 260, 'Germany'), ('Hyundai', 97, 'Korea'), ('Daimler', 185, 'UK'), ('GM', 157, 'US'), ('Honda', 138, 'Japan'), ('Ford', 156, 'US')]
需要解决的问题:如何给国家元素添加'Made in '前缀?
解决方案
只需要在列表推导式生成元组时,对countries元素做字符串拼接处理,直接生成带前缀的字符串即可,原列表不会被修改。修改后的代码如下:
autos1 = [(maker, revenue, f'Made in {country}') for maker, revenue, country in zip(makers, revenues, countries)]
(注:这里把循环变量改成单数形式是为了避免和原列表名重名,提升代码可读性,用原变量名也能正常运行)
运行后的正确结果:
[('Toyota', 265, 'Made in Japan'), ('Volkswagen', 260, 'Made in Germany'), ('Hyundai', 97, 'Made in Korea'), ('Daimler', 185, 'Made in UK'), ('GM', 157, 'Made in US'), ('Honda', 138, 'Made in Japan'), ('Ford', 156, 'Made in US')]
内容的提问来源于stack exchange,提问作者grandma1209
相关产品推荐
相关产品推荐

