python - python以特定格式将三个列表合并为一个
问题描述
我有三个列表,我想将它们组合成一个列表(包括每个国家/地区缩写的所有可能组合 4),它们应该是如下的字符串
query = f'c_code={country}&min_age={age[0]}&max_age={age[1]}&gender={gender}'
即每个国家/地区将有 4 个字符串,我做了以下三个 for 循环来做到这一点,但我相信这不是很 Pythonic。
country_abb=['ID', 'IR', 'IQ', 'IE', 'IM', 'IL', 'IT', 'CI', 'JM', 'JP', 'JE', 'JO', 'KI', 'KW', 'KG', 'LA', 'LV', 'LB', 'LS', 'LR', 'LY', 'LI', 'LT', 'LU', 'MO', 'MK', 'MG', 'MW', 'MY', 'MV', 'ML', 'MT', 'MH', 'MQ', 'MR', 'MU', 'YT', 'MX', 'FM', 'MD', 'MC', 'MN', 'ME', 'MS', 'NA', 'NP', 'NL', 'NC', 'NZ', 'NI', 'NE', 'NG', 'MP', 'NO', 'OM', 'PK', 'PW']
genders = ['male','female']
ages_range = [[16,25],[26,50]]
all_queries = []
for country in country_abb:
for gender in genders:
for age in ages_range:
query = f'c_code={country}&min_age={age[0]}&max_age={age[1]}&gender={gender}'
all_queries.append(query)
解决方案
你可以使用product
from itertools
。我不知道它是否更pythonic,但它有点短,我觉得它更具可读性,但我猜你的里程可能会有所不同:
from itertools import product
country_abb=['ID', 'IR', 'IQ', 'IE', 'IM', 'IL', 'IT', 'CI', 'JM', 'JP', 'JE', 'JO', 'KI', 'KW', 'KG', 'LA', 'LV', 'LB', 'LS', 'LR', 'LY', 'LI', 'LT', 'LU', 'MO', 'MK', 'MG', 'MW', 'MY', 'MV', 'ML', 'MT', 'MH', 'MQ', 'MR', 'MU', 'YT', 'MX', 'FM', 'MD', 'MC', 'MN', 'ME', 'MS', 'NA', 'NP', 'NL', 'NC', 'NZ', 'NI', 'NE', 'NG', 'MP', 'NO', 'OM', 'PK', 'PW']
genders = ['male','female']
ages_range = [[16,25],[26,50]]
all_queries = []
for country, gender, age in product(country_abb, genders, ages_range):
query = f'c_code={country}&min_age={age[0]}&max_age={age[1]}&gender={gender}'
all_queries.append(query)
product
创建一个列表列表,其中组合了原始列表的每个元素,非常类似于原始帖子中的嵌套 for 循环。您可以在此处的 Python 文档中阅读有关它的更多信息。(感谢@roganjosh 建议添加链接。)
推荐阅读
- javascript - react-native-vector-icons + mocha: Invariant Violation
- python - What is wrong in this python script?
- python - MySQL 连接器/Python 抛出 ValueError 试图获取 zerofill 值
- c# - 使用 HTMLAgillity Pack 输出格式化列表
- jmeter - How to get the Thread group name in Jmeter dashboard APDEX view?
- xamarin - xamarin 形成阴影模糊
- java - How to assign output of java document into string variable?
- c# - Why does this function work well on my main machine but not on a virtual one? (GetPhysicallyInstalledSystemMemory)
- swagger-ui - SpringFox 和 Swagger UI - 如何记录 /login 端点
- sql - 子字符串/从oracle中的字符串值中提取预期