有没有可能从一个列表中随机*删除*一个百分比/数量的项,然后*将*项附加到另一个列表中?

2024-04-16 21:14:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我不熟悉python和编程,所以请提前道歉。我知道remove()、append()、len()和兰特.朗我相信我需要这些工具,但我不清楚如何编写代码。在

我想做的是,在循环或以其他方式访问列表“A”时,随机选择列表“A”中的一个索引,从列表“A”中删除所选的“u”索引,然后将选定的“u”索引附加到列表“B”

我只想从列表a中随机删除不超过某个百分比的项目(如果不可能,则为实数)

有什么想法吗??我所描述的可能吗?在


Tags: 工具项目代码列表len编程方式remove
3条回答
>>> lis = range(100)
>>> per = .30 
>>> no_of_items = int( len(lis) * per) #number of items in 30 percent 
>>> lis_b = []
>>> for _ in xrange(no_of_items):
       ind = random.randint(0,len(lis)-1)  #selects a random index value
       lis_b.append(lis.pop(ind))     #pop the item at that index and append to lis_b 
...     
>>> lis_b
[73, 32, 82, 68, 90, 19, 3, 49, 21, 17, 30, 75, 1, 31, 80, 48, 38, 18, 99, 98, 4, 20, 33, 29, 66, 41, 64, 26, 77, 95]

如果您不关心输入列表的顺序,我将对其进行无序处理,然后从该列表中删除n项,并将这些项添加到另一个列表中:

from random import shuffle

def remove_percentage(list_a, percentage):
    shuffle(list_a)
    count = int(len(list_a) * percentage)
    if not count: return []  # edge case, no elements removed
    list_a[-count:], list_b = [], list_a[-count:]
    return list_b

其中percentage是介于0.01.0之间的浮点值。在

演示:

^{pr2}$

如果可以在listA中找到某个元素的随机索引i,那么可以使用以下方法轻松地将其从a移动到B:

listB.append(listA.pop(i))

相关问题 更多 >