Python 从列表中提取有序子序列

Python 从列表中提取有序子序列,python,list,sequence,Python,List,Sequence,我正在尝试提取排序的序列。比如说, a = [2, 3, 1, 4, 6, 8, 5, 9] b = [3, 8, 9, 4, 10, 11, 5] c = [3,4,5] c必须包含a和b的公共值,其中[3,4,5]按顺序出现,[8,9]不得出现,因为它位于a中的[3,4]和b中的[4,5]之间 另一个例子如下: a = [2, 3, 1, 4, 6, 8, 9, 10] b = [2, 8, 3, 9, 10, 11] c = [2,3,9,10] 3 4 8 5 9 我尝试了以下代码

我正在尝试提取排序的序列。比如说,

a = [2, 3, 1, 4, 6, 8, 5, 9]
b = [3, 8, 9, 4, 10, 11, 5]
c = [3,4,5]
c
必须包含
a
b
的公共值,其中
[3,4,5]
按顺序出现,
[8,9]
不得出现,因为它位于
a
中的
[3,4]
b
中的
[4,5]
之间

另一个例子如下:

a = [2, 3, 1, 4, 6, 8, 9, 10]
b = [2, 8, 3, 9, 10, 11]
c = [2,3,9,10]
3
4
8
5
9
我尝试了以下代码:

a = [2, 3, 1, 4, 6, 8, 5, 9]
b = [3, 8, 9, 4, 10, 11, 5]

for i in a:
    for j in b:
        if i==j:
            print i
            break
我得到的错误的结果如下:

a = [2, 3, 1, 4, 6, 8, 9, 10]
b = [2, 8, 3, 9, 10, 11]
c = [2,3,9,10]
3
4
8
5
9

我如何避免获得这样的输出?还有一种类似python的方法吗?

使用
tempval
并存储上下文。这可以使用
枚举
内置函数来完成。现在使用切片,您将获得预期的输出

a = [2, 3, 1, 4, 6, 8, 5, 9]
b = [3, 8, 9, 4, 10, 11, 5]

tempval = 0
for i in a:
    for ind,j in enumerate(b[tempval:]):
        if i==j:
            print i
            tempval = ind
输出为

3
4
5

@Ekoji,要使列表有序,您可以尝试下面的代码。对列表a中的元素进行排序,使它们按顺序排列

a = [2, 3, 1, 4, 6, 8, 5, 9]
b = [3, 8, 9, 4, 10, 11, 5]
a.sort()
# use your logic 
for i in a:
    for j in b:
        if i == j:
            print ("i is : %s j is :%s"  % (i , j))
            if len(c) > 1:
               print c
               print ("validation : %s :%s" %( c[-1] , i-1))
               if  c[-1:] == [i-1]:
                   print "continue"
                   c.append(i)
               else:
                   print "do Nothing"
            else:
                c.append(i)
print c


Output : 
[3, 4]
validation : 4 :4
continue
[3, 4, 5]
validation : 5 :7
do Nothing
[3, 4, 5]
validation : 5 :8
do Nothing
[3, 4, 5]

是的,但是OP想要的是3,4,5,而不是3,4,5,8,9@Bhargav-Rao得到了是的,所以这就是为什么它不能回答这个问题:-)@Bhargav-Rao:我对代码做了修改,这应该行得通