Python:随机序列

时间:2010-03-06 19:40:31

标签: python

我有以下代码:

import string
import random

d =[random.choice(string.uppercase) for x in xrange(3355)]
s = "".join(d)

print s

此刻它会打印出字母表中随机的字母序列。但是,我需要它打印出一系列只包含四个字母的字母,例如'A','C','U','G'。这将如何实现?

由于

4 个答案:

答案 0 :(得分:2)

更改您要求random.choice选择的集:

import random

d =[random.choice('ACUG') for x in xrange(3355)]
s = "".join(d)

print s

编辑:正如SilentGhost所指出的那样,如果你的最终目标只是创建一个字符串,那么跳过中间列表会更节省内存:

s = "".join(random.choice('ACUG') for x in xrange(3355))

答案 1 :(得分:1)

只需将string.uppercase替换为包含您的选择的序列(例如,列表或字符串)。

答案 2 :(得分:0)

你的问题不明确。你的意思是你想要选择一个只有4个字符串的字符串吗?如果是这样,那么:

d =[random.choice(string.uppercase) for x in xrange(4)]

或者,如果您只想从四个选项的列表中进行选择,请执行以下操作:

d =[random.choice("ACUG") for x in xrange(3355)]

答案 3 :(得分:0)

认为 OP希望从string.uppercase中预先选择一个4个字符的样本,然后根据它创建一个3355项字符串:

import string
import random

num_samples = 4
char_sample = random.sample(string.uppercase, num_samples)
d =[random.choice(char_sample) for x in xrange(3355)]
s = "".join(d)

print s
print char_sample

在这种情况下,random.sample(population,sample_count)将很好地处理第一个要求。

但是,我同意其他答案/评论,这个问题有点模糊。