【问题标题】:Python: how to randomly extend entries in a list?Python:如何随机扩展列表中的条目?
【发布时间】:2017-08-09 13:20:58
【问题描述】:

假设我们有一个列表l = [0,3,2]。我想以随机方式用相同的值扩展它,所以l = [0,3,2,2,0]

【问题讨论】:

  • 延长多少?
  • 以数字扩展n
  • l.extend(random.sample(l, n)) 之类的东西会起作用
  • 只有在 n
  • 如果您想通过替换或使用比最初包含的更多值来扩展列表,请查看 3.6 中的新功能 random.choices 我个人没有任何经验,但它可能成为你想要的

标签: python list extend


【解决方案1】:

您可以使用random.choice()random.choices() 函数来生成额外的元素(后者在Python 3.6+ 中可用)。然后使用list.extend() 将元素添加到列表中:

>>> import random
>>> lst, n = [0, 3, 2], 2
>>> extra = random.choices(lst, k=n)  # or [random.choice(lst) for _ in range(n)]
>>> lst.extend(extra)
>>> lst
[0, 3, 2, 0, 3]

【讨论】:

  • 你可以放弃[],改用生成器理解,它会更快
  • 不一定。这取决于列表的大小。
【解决方案2】:

考虑这样的事情:

import random
l = [1, 2, 3]
n = 2
for _ in range(n):
    l.append(random.choice(l))

【讨论】:

  • @Jean-FrançoisFabre 不要使用具有副作用的列表理解
【解决方案3】:

如果我们想在随机索引处插入随机数,可以使用列表的插入函数

>>> import random
>>> l = [0,3,2]
>>> n = 10
>>> for i in range(2,n):
        l.insert(random.randrange(i),random.randrange(i))  
>>> print l
[0, 3, 0, 0, 2, 0, 3, 2, 5, 3, 2]

【讨论】:

    猜你喜欢
    • 2014-09-19
    • 1970-01-01
    • 1970-01-01
    • 2012-07-16
    • 1970-01-01
    • 2022-11-21
    • 1970-01-01
    • 1970-01-01
    • 2017-12-24
    相关资源
    最近更新 更多