我是编码新手。 我正在尝试仅从列表中按顺序提取数字。
例如,我的列表是:
s = [2, 4, 6, 7, 8, 9, 10, 13, 14, 15]
从此列表中,我只需要连续的数字:
6,7,8,9,10, 13,14,15
所以,我有以下代码,但它不起作用。
s = [2, 4, 6, 7, 8, 9, 10, 13, 14, 15]
for i in s:
if s[i+1] - s[i] == 1:
print(s[i])
你能给我一些想法吗?谢谢。
答案 0 :(得分:0)
您正在遍历列表中的项目,而不是这些项目的索引。要遍历索引,请使用:
if s[1] - s[0] == 1:
print(s[0])
for i in range(1,len(s)):
if s[i] - s[i-1] == 1:
print(s[i])
答案 1 :(得分:0)
我刚刚解决了这个问题。谢谢大家的评论。
netlogo-headless.sh
答案 2 :(得分:0)
我将遍历list s
并将结果存储在set res
中,最后,如果我想对结果进行排序,我将应用sorted function on res
获取输出。
这是一些代码。
s= [2, 4, 6, 7, 8, 9, 10, 13, 14, 15]
res = set()
for i, num in enumerate(s[:-1]):
if num+1 == s[i+1]:
res = res.union({num} )
res = res.union({s[i+1]})
print(sorted(res))
print(res)
输出为:
>>> [6, 7, 8, 9, 10, 13, 14, 15]
{6, 7, 8, 9, 10, 13, 14, 15}
请记住,set
是不排序的,即使它们似乎已排序。这是因为set
s 不支持index
es。因此,如果您希望对结果进行排序,请确保应用sorted
函数是安全的。