在做islice的同时重复第一个和最后一个项目?

时间:2018-04-20 21:44:43

标签: python python-3.x repeat itertools

在以下项目列表中,我想一次访问两个连续的列表项,并访问索引。最重要的是列表的第一个和最后一个项目,我想重复数据。

my_list = ['A','C','G','T','T','C','G','A','G']

print(my_list)
print()


for (n1, v1), (n2,v2) in zip(enumerate(my_list), itertools.islice(enumerate(my_list), 1, None)):
        print(v1)
        print(v2)
        print()

# gives me

['A', 'C', 'G', 'T', 'T', 'C', 'G', 'A', 'G']

(0, 'A')
(1, 'C')

(1, 'C')
(2, 'G')

(2, 'G')
(3, 'T')

(3, 'T')
(4, 'T')

(4, 'T')
(5, 'C')

(5, 'C')
(6, 'G')

(6, 'G')
(7, 'A')

(7, 'A')
(8, 'G')

如何,我只为第一个和最后一个项重复相同的索引?

预期产出:

(0, 'A')
(0, 'A')

(0, 'A')
(1, 'C')

(1, 'C')
(2, 'G')

.....
.....

(8, 'G')
(8, 'G')

1 个答案:

答案 0 :(得分:0)

您可以重新构建for子句并添加几个if语句:

for i, j in enumerate(zip(enumerate(my_list), itertools.islice(enumerate(my_list), 1, None))):
    (n1, v1), (n2,v2) = j

    if i == 0:
        print((n1, v1))
        print((n1, v1), '\n')

    print((n1, v1))
    print((n2,v2), '\n')

    if i == len(my_list) - 2:
        print((n2, v2))
        print((n2,v2), '\n')