繁体   English   中英

基于另外两个列表创建一个列表

[英]Create a list based on two other lists

我究竟做错了什么? 我收到错误:

IndexError:列表索引超出范围

我想要 new_col = [0,1,1,0,0,1,1,0,0,1,0,0,0,1,1,1,0,0,0,0,0]

starts = [1,5,9,13]
ends = [3,7,10,16]

new_col = []

check = 0
start_idx = 0
end_idx = 0

for i in range(20):
    if i == starts[start_idx]:
        check += 1
        new_col.append(check)
        start_idx += 1
        continue
    elif i == ends[end_idx]:
        check -= 1
        new_col.append(check)
        end_idx += 1
        continue
    else:
        new_col.append(check)
        continue

我不清楚状态机究竟在哪里中断,但这似乎不必要地棘手。 我不会尝试调试和修复它,而是像这样迭代范围:

>>> starts = [1,5,9,13]
>>> ends = [3,7,10,16]
>>> new_col = [0] * 20
>>> for start, end in zip(starts, ends):
...     for i in range(start, end):
...         new_col[i] = 1
... 
>>> new_col
[0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0]

您的问题是start_idxend_idx正在增加,直到它们不在您的列表末尾。

starts = [1,5,9,13]
ends = [3,7,10,16]

应该

starts = [1,5,9,13,21]
ends = [3,7,10,16,21]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM