CS50 DNA: выбор STR с помощью next () - PullRequest
0 голосов
/ 21 июня 2020

Я работаю над набором задач 6: ДНК. Мой подход состоит в том, чтобы сохранить различные типы последовательностей STR как «all_sequences», а затем найти максимальное количество повторов для каждой последовательности в «all_sequences».

Мой вопрос: почему next () гарантирует, что я буду только выбрать первую строку csv? Я понимаю, что [1:] предназначен для удаления столбца имени, но как next () гарантирует, что я выберу только первую строку?

f = sys.argv[1]  # name of CSV file
t = sys.argv[2]  # name of text file with dna sequence

# Open the CSV file and read its contents into memory.
with open(f, "r") as database:
    index = csv.reader(database)
    all_sequences = next(index)[1:]

    # Open the DNA sequence and read its contents into memory.
    with open(t, "r") as dnaseq:
        s = dnaseq.read()
        actual = [maxrepeats(s, seq) for seq in all_sequences]
    
    print_match(index, actual)

1 Ответ

0 голосов
/ 21 июня 2020

В вашем примере index - это csv.reader объект , который является итератором. next(index) дает следующий элемент итератора (очевидно, список). Затем список разрезается, чтобы пропустить первое значение.

Странно видеть, что next используется только один раз, потому что это просто дает первую строку итератора index. Это начинает иметь смысл, когда следующий вызывается чаще.

...