2015-08-31 2 views
0

Я определил функцию для чтения строк из файла в список. Затем я хочу вызвать эту функцию из цикла while. Список создается правильно в первом цикле, но следующие циклы создают пустой список.python create list in while loop

Как я могу получить свой код для регенерации списка каждый раз? (Для уточнения это не последняя функция, но я выделил проблему в своем коде для генерации списка).

def get_random_gene_list(input): 
    disease_genes = [] 
    for line in input: 
     disease_genes.append(line.strip()) 

    return disease_genes 

x=0 
while x < 5: 

    unpack_gene_list = get_random_gene_list(args.i) 
    print unpack_gene_list 


    x = x + 1 
+0

ваш 'функция get_random_gene_list' не делает ничего случайного. – acushner

+0

Полная функция ниже. Как я сказал в сообщении, я выделил проблему и не стал публиковать полную функцию. Защиту get_random_gene_list (вход, подмножество): genes_to_remove = множество (random.sample (вход, подмножество)) genes_to_use = список (набор (вход) - genes_to_remove) возвращения (genes_to_use, genes_to_remove) – dana

ответ

0

Предположив, что args.i является объектный файл, вы читаете этот файл на первом цикле, который помещает указатель в конец файла. Вам нужно перечитать файл в каждом цикле? Если нет, вы должны вызвать функцию один раз за пределами цикла while и сохранить полученный список. Фактически, вам даже не нужна функция. Кроме того, в этом случае вы должны использовать цикл for.

unpack_gene_list = list(args.i) 

x = 0 
for x in range(5): 
    print unpack_gene_list 
+0

я в конечном итоге чтение файл за пределами цикла while, как вы предложили. Я думал, что попробовал это, но я, должно быть, сделал что-то неправильно. Вы случайно не знаете, почему файл не перечитывался и сохранялся в списке каждый цикл? Я не понимаю, почему он остановился в первом цикле. Благодаря! – dana

+0

@dana, когда вы читаете файл-файл, он перемещает указатель файла вперед. Вы не можете перечитать один и тот же файл, не возвращая его. – Cyphase

+0

Ой, я просто изучил это. Спасибо за помощь. – dana

0

Это работает отлично для меня, если я не понял ваш вопрос. Проблема может заключаться в вашем вводе.

k = ['1','1','a','aa'] 

def get_random_gene_list(input): 
    disease_genes = [] 
    for line in input: 
     disease_genes.append(line.strip()) 
    return disease_genes 

x=0 
while x < 5: 
    unpack_gene_list = get_random_gene_list(k) 
    print unpack_gene_list 
    x = x + 1 

Выход:

['1', '1', 'a', 'aa'] 
['1', '1', 'a', 'aa'] 
['1', '1', 'a', 'aa'] 
['1', '1', 'a', 'aa'] 
['1', '1', 'a', 'aa'] 

Process finished with exit code 0 
+0

Да, я также устранил эту проблему. Я предполагаю, что проблема заключалась в том, что мой ввод читается из файла. Благодарю. – dana