如何简化实现年份列表元素与周列表所有元素的字符串拼接?
问题描述
现有如下两个Python列表:
year = ['2019', '2020', '2021', '2022'] week = [str(i).zfill(2) for i in range(1,53)]
需要将year中的每个年份字符串,与week中的所有周数字符串逐一拼接,生成形如['201901','201902',……,'202252']的列表,现寻求更简洁的实现方案。
简洁解决方案
这里提供两种高效简洁的实现方式:
1. 嵌套列表推导式(最直观简洁)
直接通过嵌套循环的列表推导式一行完成:
result = [y + w for y in year for w in week]
逻辑:外层遍历所有年份,内层遍历所有周数,将每一组年份与周数拼接后存入结果列表。
2. 使用itertools.product(适合通用笛卡尔积场景)
借助itertools模块的product方法生成年份和周数的笛卡尔积,再完成拼接:
import itertools result = [''.join(pair) for pair in itertools.product(year, week)]
逻辑:itertools.product(year, week)会生成所有(年份, 周数)的元组组合,再通过''.join将每个元组内的两个字符串拼接为一个完整字符串。
两种方式都能得到符合要求的列表结果,其中第一种列表推导式在该场景下代码最精简,可读性也较强。
内容的提问来源于stack exchange,提问作者Suhas_Pote
相关产品推荐
相关产品推荐

