猿问

如何根据Python中列表中每个元素的值创建多个列表?

如何根据一个现有列表中的元素创建多个列表?这些新列表的名称和元素均由现有列表确定。

例如,现有的列表是:

a = [2,5,4]

期望的输出是:

a_2= ['01','02']
a_5= ['01','02','03','04','05']
a_4= ['01','02','03','04']

我不知道如何循环创建不同的列表名称。有任何想法吗?


Smart猫小萌
浏览 235回答 3
3回答

芜湖不芜

您可以根据所需的变量使用键填充字典: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']

烙印99

直接动态定义新变量是可能的,但不是很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']

精慕HU

这能回答你的问题吗?a = [2,5,4] a_2, a_5, a_4 = [['0'+str(x) for x in range(b)] for b in a]
随时随地看视频慕课网APP

相关分类

Python
我要回答