在元组列表中添加元组时有问题

2024-10-03 23:26:26 发布

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

我有两个列表,其中包含文本文件中特定提要的行号开始和结束: 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只包含最后一个附加值


Tags: of代码列表forlenlist元组print
1条回答
网友
1楼 · 发布于 2024-10-03 23:26:26

每次迭代创建一个空列表:

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))

相关问题 更多 >