我有一个包含这些元素的列表(列表由 str(elements) 组成):
['-0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15']
我想处理它以获得这样的输出
['-0', '1#', '15#']
如果元素是 -x 我想把它留在那里,所以我取最后 2 个元素,如果间隙为 1,则删除最后一个元素之前的元素。 这是代码:
for k in range(len(l1)):
if "-" in (l1[-k] or l1[-k-1]):
print("debuggggg")
pass
elif(int(l1[-k]) - int(l1[-k-1])== 1 and int(l1[-k]) - int(l1[-k-2])== 2) :
a= l1[-2]
print(a)
l1.remove(a)
#print("debug 2")
elif(int(l1[-k]) - int(l1[-k-1])== 1):
a= l1[-2]
l1.remove(a)
l1[-2] = l1[-2] +"#"
l1[-1] = l1[-1] +"#"
print("3")
#elif(type(l1[-2]) is str):
#pass
问题在这里:
debuggggg
14
13
12
11
10
9
8
最后 2 个元素不包含字符“-”,但似乎包含。 此外,在 8 循环脚本崩溃后:
elif(int(l1[-k]) - int(l1[-k-1])== 1 and int(l1[-k]) - int(l1[-k-2])== 2) :
IndexError: list index out of range
但不在列表范围内。有什么问题?
请您参考如下方法:
你的第二个问题
但不在列表范围内。问题是什么?
只是超出范围的错误。
l1[-len(l1)-1]
引发此错误。您正在您的代码中执行此操作。
for k in range(len(l1)):
...
elif(int(l1[-k]) - int(l1[-k-1])== 1 and int(l1[-k]) - int(l1[-k-2])== 2) :#<--here(l1[-k-2])
