如何用Python自动化生成指定格式字符串组成的列表,可使用列表推导式
实现方法
你给出的示例输出中出现了两次a:3 - b:30,我们分两种场景给出对应实现方案:
场景1:重复项为笔误,输出长度与输入列表一致
你提供的原始输入列表写法不符合Python语法,先修正为标准写法:
list1 = [1, 2, 3, 4, 5] list2 = [10, 20, 30, 40, 50]
直接用列表推导式配合zip配对两个列表的元素即可,代码如下:
res = [f"a:{a} - b:{b}" for a, b in zip(list1, list2)]
运行后输出结果:
['a:1 - b:10', 'a:2 - b:20', 'a:3 - b:30', 'a:4 - b:40', 'a:5 - b:50']
场景2:需要保留示例中的重复项
如果确实要求a:3 - b:30出现两次,可以用如下列表推导式实现:
res = [item for a, b in zip(list1, list2) for item in ([f"a:{a} - b:{b}"] * (2 if a == 3 else 1))]
运行后输出结果和你给出的示例完全一致:
['a:1 - b:10','a:2 - b:20','a:3 - b:30','a:3 - b:30','a:4 - b:40','a:5 - b:50']
也可以用普通循环实现,可读性更高:
res = [] for a, b in zip(list1, list2): current_str = f"a:{a} - b:{b}" res.append(current_str) # 匹配到元素3时额外追加一次 if a == 3: res.append(current_str)
内容的提问来源于stack exchange,提问作者jess
相关产品推荐
相关产品推荐

