蟒蛇 |如何将元素随机添加到列表中

2024-05-10

有没有一种方法可以将元素随机添加到列表中,内置函数

ex:

def random_append():
     lst = ['a']
     lst.append('b')
     lst.append('c')
     lst.append('d')
     lst.append('e')
     return print lst

这将输出['a', 'b', 'c', 'd', 'e']

但我希望它随机添加元素并输出如下所示的内容:['b', 'd', 'b', 'e', 'c']

是的,有一个函数 random.shuffle() 但它会立即对列表进行洗牌,这是我不需要的,我只想执行随机插入。


如果您需要在随机位置执行单个插入,那么已经给出的简单示例就可以工作:

from random import randrange

def random_insert(lst, item):
    lst.insert(randrange(len(lst)+1), item)

但是,如果您需要将 k 个项目插入到长度为 n 的列表中,那么使用前面给出的函数的复杂度是 O(n*k + k**2)。然而,如果提前计算目标位置并一次性重写输入列表,则可以在线性时间 O(n+k) 内完成插入多个项目:

from random import sample
def random_insert_seq(lst, seq):
    insert_locations = sample(xrange(len(lst) + len(seq)), len(seq))
    inserts = dict(zip(insert_locations, seq))
    input = iter(lst)
    lst[:] = [inserts[pos] if pos in inserts else next(input)
        for pos in xrange(len(lst) + len(seq))]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

蟒蛇 |如何将元素随机添加到列表中 的相关文章

随机推荐