2010-03-06 4 views
1

У меня есть следующий код:Python: Случайная последовательность

import string 
import random 

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

print s 

На данный момент он выводит случайную последовательность букв из алфавита. Но мне нужно распечатать последовательность букв, содержащих только четыре буквы, например «A», «C», «U», «G». Как это будет сделано?

Благодаря

Quinn

+0

Вы делаете случайные последовательности РНК? –

ответ

2

Изменение набора вы просите random.choice, чтобы выбрать из:

import random 

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

print s 

Edit: Как SilentGhost указывает, если ваша конечная цель состоит в том только, чтобы сделать строку, пропуская промежуточный список более эффективно с точки зрения памяти:

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

вам не нужно понимание списка там – SilentGhost

1

просто заменить string.uppercase с последовательностью (списка или строки, например), содержащие ваш выбор.

0

Ваш вопрос непонятен. Вы имеете в виду, что хотите выбрать строку длиной всего 4? Если да, то сделать:

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

Или, если вы хотите выбрать из списка только четыре выбора, а затем сделать:

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

Я думаю ФП хочет предварительно выбрать 4 -character образец из string.uppercase, а затем создать строку 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 (население, sample_count) будет заботиться о том пихты t довольно хорошо.

Однако, я согласен с другими ответами/комментариями, что этот вопрос немного расплывчатый.

Смежные вопросы