【问题标题】:Create a new list enumerating the random integers from another list in Python创建一个新列表,枚举 Python 中另一个列表中的随机整数
【发布时间】:2021-06-25 07:38:57
【问题描述】:

我需要模拟某个场景。

所以我定义了一个变量,它生成一个随机整数的循环。

例如:

list = [2, 35, 4, 8, 56, 10]

然后,我通过另一个循环生成这个随机列表 50 次,并将数据存储到字典中以可视化 Pandas 数据框。

data_dict = {'random_numers': list}
data_dict_pd = pd.DataFrame(data_dict)

所以我得到例如这个:

[1, 16, 6, 6, 1, 10]
[3, 8, 4, 4, 1, 20, 7, 25, 12]
[14, 8, 16, 4, 11, 18, 5, 15, 24, 2, 15, 5]
[7, 24, 1, 14]
[5, 14, 19, 24, 1]
... 50 times. 

现在,我需要创建另一个列来枚举每个元素列表中的每个数字,以根据之前的结果获得以下结果:

[1, 2, 3, 4, 5, 6]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
[1, 2, 3, 4]
[1, 2, 3, 4, 5]
...50 times. 

其实想出了下面的但是错了:

new_list = []
 for index in enumerate(list)
    new_list.append(index)

有更好的主意吗?

【问题讨论】:

  • 怎么“错”了?你不是在找list(range(1, len(lst) + 1))...吗?
  • @deceze 这将导致 TypeError: 'list' object is not callable 错误,因为 OP 已重命名 list
  • @Selnay 这是 OP 代码中的一个错误……
  • 这是错误的,因为它枚举的是孔字符串而不是列表的单个元素。事实上,它返回第一个字符串的 1 个,第二个返回 2 个等等。相反,我需要将单个元素枚举到列表中

标签: python list loops random integer


【解决方案1】:

我强烈建议更改您的列表名称,因为list 用于 Python 列表。

假设您将其更改为 l,我会使用:

l = [2, 35, 4, 8, 56, 10]
new_list = []
for i in range(1, len(l) + 1):
    new_list.append(i)
print(new_list)

输出: [1, 2, 3, 4, 5, 6]

如果您需要的是迭代列表列表并合并@deceze 建议(前提是您不重命名list):

lists = [
    [1, 16, 6, 6, 1, 10],
    [3, 8, 4, 4, 1, 20, 7, 25, 12],
    [14, 8, 16, 4, 11, 18, 5, 15, 24, 2, 15, 5],
    [7, 24, 1, 14],
    [5, 14, 19, 24, 1]
]

new_lists = [list(range(1, len(lst) + 1)) for lst in lists]
print(new_lists)

输出: [[1, 2, 3, 4, 5, 6], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], [1, 2, 3, 4], [1, 2, 3, 4, 5]]

【讨论】:

  • 这是无效的语法,可以简化为list(range(1, len(l) + 1))。根据 OP 是否真的需要列表,您也可以省略 list()
  • 我已经更正了语法。此外,如果 OP 在其代码中使用该名称作为实际数据列表,我将无法使用 list()。我已经使用了这种方法,以防 OP 不想更改名称
  • @Foldhy 我已经添加了我得到的输出。对我来说似乎是正确的。
  • 在你身边看起来不错,但我不明白为什么我会得到这个:[7, 8, 1, 14, 19, 5, 18, 7, 11, 4, 15] 1 [16 , 7, 6, 3, 13, 2, 20, 1, 11, 7, 16, 2, 5] 2 [15, 1, 1, 13, 13, 17, 2, 13, 6, 13, 8, 7 ] 3 [2, 15, 4, 20, 18, 2, 8, 15, 1, 5, 9, 1, 7, 2] 4 [18, 10, 4, 19, 5, 3, 6, 15, 8 , 20, 1] 5
  • 您能分享产生该输入的代码吗?
【解决方案2】:
new_list = []
for index in range(1,len(list)+1)
    new_list.append(index)

应该用来代替枚举器,因为它将返回对。

谢谢,

【讨论】:

  • 嗨,Raja,只是不工作。它正在枚举随机数的孔串。相反,我需要枚举随机数的单个元素并创建另一个列表。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-09
  • 2019-12-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多