如何在列表理解表达式中添加计数器?

2024-10-01 00:32:50 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有可能在下面做一个列表理解表达式?在

end_pieces = ['ATCGCTGCAATG', 'CCTACGGCATGG', 'AGTACTTTATTA', 'TAACAGTTCTTC']

genome_ht = {'ATCGCTGCAATG': [18], 'CCTACGGCATGG': [30], 'AGTACTTTATTA': [42]}


start_positions = []
count = 0
for read_piece in end_pieces:
    for index in genome_ht[read_piece]:
        start_positions.append(index-(count*KEY_LENGTH))
    count +=1


 >>> print start_positions
 [18, 18, 18]

Tags: inforreadindexpiecegenomecountstart
2条回答

您可以使用列表理解中的double iteration和函数enumerate来完成此操作:

start_positions = [index - count * KEY_LENGTH for count, read_piece in enumerate(end_pieces) for index in genome_ht[read_piece]]

enumerate允许不带局部变量进行计数。除此之外,它是两个序列的简单嵌套迭代。在

end_pieces = ['ATCGCTGCAATG', 'CCTACGGCATGG', 'AGTACTTTATTA', 'TAACAGTTCTTC']
genome_ht = {'ATCGCTGCAATG': [18], 'CCTACGGCATGG': [30], 'AGTACTTTATTA': [42], 'TAACAGTTCTTC': [1]}

KEY_LENGTH = 12
start_positions = [index-count*KEY_LENGTH for count, read_piece in enumerate(end_pieces) for index in genome_ht[read_piece]]

相关问题 更多 >