我有两个列表,其中包含来自文本文件的特定订阅源的开头和结尾的行号:
startPosOfFeeds = [1, 35]
和endPosOfFeeds = [34, 56]
我想将这两个列表转换为这样的元组列表:
list_of_tuples = [(1,34), (35, 56)]
鉴于我只在len(startPosOfFeeds) == len(endPosOfFeeds)
我的代码:
numOfFeeds = len(startPosOfFeeds)
print(numOfFeeds)
print(startPosOfFeeds)
print(endPosOfFeeds)
for i in range(numOfFeeds):
list_of_tuples = []
print(i)
print(str(startPosOfFeeds[i])+'......'+str(endPosOfFeeds[i]))
list_of_tuples.append(startPosOfFeeds[i],endPosOfFeeds[i])
print(list_of_tuples)
输出错误:
2
[1, 35]
[34, 56]
0
1......34
1
35......56
[(35, 56)]
我不确定为什么列表list_of_tuples
只保留最后一个附加值。
答案 0 :(得分:4)
每次迭代都会创建一个空列表:
for i in range(numOfFeeds):
list_of_tuples = [] # <-- this creates the empty list in each iteration
...
list_of_tuples.append((startPosOfFeeds[i],endPosOfFeeds[i]))
解决方案非常简单:将list_of_tuples = []
放在循环前面:
list_of_tuples = []
for i in range(numOfFeeds):
...
list_of_tuples.append((startPosOfFeeds[i],endPosOfFeeds[i]))
请注意,您也可以使用zip
和列表理解:
list_of_tuples = [(startpos, endpos) for startpos, endpos in zip(startPosOfFeeds, endPosOfFeeds)]
或者只是将zip
投射到list
:
list_of_tuples = list(zip(startPosOfFeeds, endPosOfFeeds))