我有以下测试代码。在运算符中使用列表评估子集
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