-2

我有一个清单:

a = [1,3,5,657,78,43,7,2,123, 43, 321, 4531]

我想从此列表中删除 1 个大于 100 的随机整数。如何执行此操作?

4

4 回答 4

8
In [55]: a
Out[55]: [1, 3, 5, 657, 78, 43, 7, 2, 123, 43, 321]

In [56]: a = [1,3,5,657,78,43,7,2,123, 43, 321, 4531]

In [57]: a.pop(random.choice([i for i,num in enumerate(a) if num>100]))
Out[57]: 4531

In [58]: a
Out[58]: [1, 3, 5, 657, 78, 43, 7, 2, 123, 43, 321]
于 2012-11-19T20:57:37.223 回答
3

首先,获取超过 100 的所有元素的索引列表:

dels = [i for i, val in enumerate(a) if val > 100]

现在从该列表中选择一个:

index = random.choice(dels)

现在从原始列表中删除该索引:

del a[index]

把它们放在一起:

>>> a = [1,3,5,657,78,43,7,2,123, 43, 321, 4531]
>>> dels = [i for i, val in enumerate(a) if val > 100]
>>> index = random.choice(dels)
>>> del a[index]
>>> a
[1, 3, 5, 657, 78, 43, 7, 2, 43, 321, 4531]
于 2012-11-19T21:07:02.483 回答
2

如果你的列表中有很多大于 100 的数字,你可以在列表的开头和结尾之间选择一个索引,如果它大于 100,则将其删除,否则选择另一个。

如果你没有很多优于 100 的元素,你应该将优于 100 的元素保存在一个数组中,随机选择其中一个,然后从原始数组中删除它。

于 2012-11-19T20:58:36.787 回答
1

创建超过 100 的整数的索引列表,随机选择其中一个索引,然后从列表中删除该索引

于 2012-11-19T20:58:16.913 回答