我们可以使用f字符串在for循环中创建列表,然后在同一迭代中使用它来附加数据吗



要求:

  • 我想运行一个for循环,该循环将根据其范围创建一个新列表
  • 创建列表后,我希望列表附加迭代中运行的数据
  • 如果我的范围是5,那么应该创建4个列表,并将其用于附加其中的数据

附加一个完全错误的代码,但它解释了我想要什么

for b in range(1,5):
f"abc{b}" = []
d = f"***{b}"
f"abc{b}".append(d)

print(abc1)
Output - ***1
print(abc2)
Output - ***2

这样的事情可能发生吗?或者其他解决方案?

对于所有回答过我之前问题的用户,我请求您更新您的评论和答案。

使用字典。

示例:

mydict = {};
for i in range (1,5):
mydict[i] = [i]

这将创建这样一个对象:

{1: [1], 2: [2], 3: [3], 4: [4]}

您可以根据需要对其进行迭代/交互。

如果我理解你的意图,你不需要100个变量,你只需要创建一个列表列表,并以这种方式添加元素

list_of_lists = []
for i in range(1,5):
list_of_lists.append([i])
print(list_of_lists)

您可以使用列表理解、

In [80]: result = [[i] for i in range(1, 5)]
In [81]: result
Out[81]: [[1], [2], [3], [4]]

或者,

In [82]: result = []
In [83]: for i in range(1, 5):
...:     result.append([i])

编辑

我从您的评论中了解到,您希望在每次迭代中创建一个新的变量。我认为这是一个糟糕的方法,你可以用字典代替。

这是一个糟糕的做法

In [84]: for i in range(0, 5):
...:     globals()[f"list_{i}"] = [i]
In [85]: print(list_0, list_1, list_2, list_3, list_4)
[0] [1] [2] [3] [4]

你可以用这样的字典,

In [86]: {f'list_{i}': [i] for i in range(0, 5)}
Out[86]: {'list_0': [0], 'list_1': [1], 'list_2': [2], 'list_3': [3], 'list_4': [4]}

您可能需要使用dict理解

#num of lists you want
num_of_lists = 5
mylists = { f'list_{i}':[i] for i in range(1,num_of_lists )}
# set the dictionary of named-lists to your local variables
# WARNING: this will overwrite any local variables with the same name
locals().update(mylists)
print(list_1)
# [1]

最新更新