如何根据一个现有列表中的元素创建多个列表?这些新列表的名称和元素均由现有列表确定。例如,现有的列表是:a = [2,5,4]期望的输出是:a_2= ['01','02']
a_5= ['01','02','03','04','05']
a_4= ['01','02','03','04']我不知道如何循环创建不同的列表名称。有任何想法吗?
3 回答
![?](http://img1.sycdn.imooc.com/54584c5e0001491102200220-100-100.jpg)
芜湖不芜
TA贡献1796条经验 获得超7个赞
您可以根据所需的变量使用键填充字典:
a = [2, 5, 4] output = {f"a_{i}": ["{:02d}".format(x) for x in range(1, i + 1)] for i in a}
然后您可以轻松访问它们:
print(output["a_4"]) # ['01', '02', '03', '04']
![?](http://img1.sycdn.imooc.com/5333a0780001a6e702200220-100-100.jpg)
烙印99
TA贡献1829条经验 获得超13个赞
直接动态定义新变量是可能的,但不是很Pythonic...我的建议是构建一个名为的字典res:
a = [2, 5, 4]
res = {n: [f"{i:02d}" for i in range(1, n + 1)] for n in a}
print(res) # {2: ['01', '02'], 5: ['01', '02', '03', '04', '05'], 4: ['01', '02', '03', '04']}
print(res[5]) # ['01', '02', '03', '04', '05']
(其中res[5]作为您的a_5)...
将变量动态添加到全局命名空间的混乱版本是:
a = [2, 5, 4]
for n in a:
globals()[f"a_{n}"] = [f"{i:02d}" for i in range(1, n + 1)]
print(a_2) # ['01', '02']
print(a_4) # ['01', '02', '03', '04']
print(a_5) # ['01', '02', '03', '04', '05']
![?](http://img1.sycdn.imooc.com/545861e40001199702200220-100-100.jpg)
精慕HU
TA贡献1845条经验 获得超8个赞
这能回答你的问题吗?
a = [2,5,4] a_2, a_5, a_4 = [['0'+str(x) for x in range(b)] for b in a]
添加回答
举报
0/150
提交
取消