2016-12-05 152 views
0

例如,一個元組(1,0,1,1,1,0) 和子元組是(1,0)Python ::如何找出一個元組的子元素是在元組中?

遞增的順序

,如何找到這個子元組是在元組?

僅通過使用迭代來逐一比較是否唯一方法?

Ex。 (1,0,1,1,1,0)= (1,0,*,*,*,*) 所以子元組(1,0)在元組中!

c.f.我並不需要知道(1,0)是(1,0,1,1,1,0)是這樣的:

(1,0,1,1,1,0)= (*,*,*,*,1,0)所以(1,0)在(1,0,1,1,1,0).. =>錯誤的一個。

+0

你似乎知道怎麼做。那麼你的問題到底是什麼?你擔心效率嗎?你是否希望找到更簡潔的代碼?無論哪種方式,請分享您的代碼... – Julien

回答

1

builtin sequence types的文檔說in操作可以做一個子支票,但僅限於某些類型:

注:

  1. 雖然並沒有在業務中使用僅在一般情況下進行簡單的容器測試時,某些專用序列(如str,字節和bytearray)也將其用於子序列測試:

    >>> "gg" in "eggs" True

所以,如果你的數據是0和255之間的唯一整數,你都可以轉換成字節,以檢查:

>>>bytes((1,0)) in bytes((1,0,1,1,1,0)) True

對於其他類型的數據,這種表達是一個迭代的方式直插:

A = ('L', 'R') B = ('L', 'R', 'L', 'L', 'L', 'R') any(A == B[i:len(A) + i] for i in range(len(B) - len(A) + 1)) True

...雖然也許在for循環中寫出它會更容易閱讀。


這些方法會趕上(1,0),如果它在任何地方的第二元組,這樣的例子已標記爲錯誤的人會被匹配。如果你只是想匹配,如果第一個元組開始發現在第二元組的第一項,那麼也許你可以切片和比較:

>>> A =(1,0)

>>> B =(1,0,1,1,1,0)

>>> A == B [:LEN(A)]

相關問題