所以我有一个巨大的字符串,我逐个元素地处理它。我想知道剩下多少,所以我尝试将当前位置字减去最后一个位置字以查看剩下多少。我试过这样的事情:
with codecs.open("C:\\dna_chain.txt",'r', "utf-8") as file:
for line in file:
temp_buffer = line.split()
for i,word in enumerate(temp_buffer):
print(enumerate(temp_buffer[i]))
print(enumerate(temp_buffer[-1]))
我在记忆中获得了位置并且它们是相同的。
答案 0 :(得分:2)
enumerate()
返回一个生成器对象;你只打印了对象的表示,然后再次丢弃它。然后第二行重用现在对象的相同内存位置。
您可以在此处直接引用temp_buffer
对象而不是enumerate()
:
for i, word in enumerate(temp_buffer):
print(temp_buffer[i])
print(temp_buffer[-1])
但temp_buffer[i]
与该循环中的word
相同。 temp_buffer[-1]
是您列表中的最后一个词。
如果您想知道要处理多少单词,请使用len(temp_buffer) - i
,temp_buffer
列表的长度,减去当前位置。
答案 1 :(得分:1)
您应事先计算项目数:
words = len(temp_buffer)
你的代码中的看起来像是
import codecs
with codecs.open("C:\\dna_chain.txt",'r', "utf-8") as file:
for line in file:
temp_buffer = line.split()
words = len(temp_buffer)
for i,word in enumerate(temp_buffer):
print(i, word, words-i-1)
这将打印索引i
,单词word
以及此行words-i-1
中剩余项目的数量。