Python:选择一个没有替换的元素

时间:2010-04-06 18:42:21

标签: python

我想从字符串中剪切随机字母。

鉴于 S = “你好”

我想从's'中选择没有替换的元素,但保留索引号。

例如

>>> random.sample(s,len(s))
['w', 'h', 'o', 'd', 'y']

接近我想要的,但我实际上更喜欢像

这样的东西

[('w',2),('h',0),('o',1),('d',3),('y',4)]

带字母索引对。这很重要,因为同一个字母不止一次出现在's'中。 ie)“字母”,其中't'出现两次,但我需要区分第一个't'和第二个。

理想情况下,我实际上只需要生成/选择字母,因为我需要它们但是一次加扰和计算所有字母(即:在如上所示的列表中)是可以的。

3 个答案:

答案 0 :(得分:17)

>>> random.sample(list(enumerate(a)), 5)
[(1, 'o'), (0, 'h'), (3, 'd'), (2, 'w'), (4, 'y')]

答案 1 :(得分:9)

您可以在采样前枚举列表:

>>> random.sample(list(enumerate(l)), 5)
[(1, 'o'), (2, 'w'), (0, 'h'), (3, 'd'), (4, 'y')]

答案 2 :(得分:3)

这样做可能更容易:

def sample_with_indices(s):
    indices = range(len(s))
    random.shuffle(indices)
    return [(s[i], i) for i in indices]

这将基本上改变字符串的所有索引,然后只返回该索引处的字符。从角色到指数要困难得多。