依次提取数字:python

时间:2018-10-13 06:49:36

标签: python sequential

我是编码新手。 我正在尝试仅从列表中按顺序提取数字。

例如,我的列表是:

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

你能给我一些想法吗?谢谢。

3 个答案:

答案 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函数是安全的。