我有以下測試代碼。在運算符中使用列表評估子集
a = ['a', 'b', 'c', 'd', 'e']
c = a * 3
b = a
但b in c
返回False。 b是c的子序列,而列表c包含b。那麼它爲什麼會返回錯誤呢?
在此先感謝。
我有以下測試代碼。在運算符中使用列表評估子集
a = ['a', 'b', 'c', 'd', 'e']
c = a * 3
b = a
但b in c
返回False。 b是c的子序列,而列表c包含b。那麼它爲什麼會返回錯誤呢?
在此先感謝。
b in c
不行的原因是b的樣子:
['a', 'b', 'c', 'd', 'e']
和c的樣子:
['a', 'b', 'c', 'd', 'e', 'a', 'b', 'c', 'd', 'e', 'a', 'b', 'c', 'd', 'e']
換句話說,B是不是序列的元素。相反,b是一個子序列。如果你要構建C作爲如下:
c = [a, a, a]
那麼C會是什麼樣子:
[['a', 'b', 'c', 'd', 'e'], ['a', 'b', 'c', 'd', 'e'], ['a', 'b', 'c', 'd', 'e']]
和 「B在C」 將返回true。
希望這會有所幫助。
如果你有這樣的代碼:當你鍵入b in c
a = ['a', 'b', 'c', 'd', 'e']
c = [a] * 3
b = a
你會得到True
。
在這種情況下
c = [a] * 3
(帶[]周圍)
將返回:
[['a', 'b', 'c', 'd', 'e'], ['a', 'b', 'c', 'd', 'e'], ['a', 'b', 'c', 'd', 'e']]
確定。看來在運算符中只能爲一個序列中的一個對象工作。所以它不會用於查找列表是否是另一個列表的子列表。我找到了一種通過使用元組來評估的方法。 – Sumod 2011-02-24 06:33:58