0

この質問が以前に尋ねられたかどうかはわかりませんが、質問リストから同様のものを見つけることができませんでした. リストに特定の順序で 3 つの値のセットがあるかどうかを確認したいと思います。たとえば、int リストに、そのリスト内のどこかに値 1、2、3 のセットがあるかどうかを確認したいと思います。リストの長さは不明であり、リストをソートできません。

例:

Values to check: 1, 2, 3 (in this order)
Example of a list = [1, 1, 2, 3, 1]

これは私がこれまでに試したことです。

list1 = [1, 1, 2, 3, 1]
list2 = [1, 1, 4, 3, 1, 2, 1]

def checkValue:
    for i in range (0, len(nums)):            
        if (nums[i+2] - nums[i+1] == nums[i+1] - nums[i]) == 1:
            return True           

    return False

list1 --> true を返す list2 ---> IndexError: リスト インデックスが範囲外

編集:答えてくれた人たちに感謝し、サブリストの質問へのリストに感謝します。整数のセットをサブリストと見なして、それを使用してより大きなリストと比較できるとは思いもしませんでした。

4

4 に答える 4

0

itertools.izipタプル比較は、zip イテレーション (または、必要に応じて、一般的なイテラブル)と共に直接使用できます。

>>> def findin(values, nums):
...     t = tuple(values)
...     return any(T == t for T in zip(*(nums[i:] for i in xrange(values))))

これはあなたの例に与えます:

>>> findin([1,2,3], [1,1,2,3,1])
True
>>> findin([1,2,3], [1, 1, 4, 3, 1, 2, 1])
False
于 2013-09-26T10:32:43.143 に答える