使用in运算符评估列表的子集

时间:2011-02-24 06:30:26

标签: python

我有以下测试代码。

a = ['a', 'b', 'c', 'd', 'e']
c = a * 3
b = a

b in c返回False。 b是c的子序列,列表c包含b。那为什么它会返回假?

提前致谢。

2 个答案:

答案 0 :(得分:5)

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 in c”将返回True。

希望这有帮助。

答案 1 :(得分:0)

如果您有此代码:

a = ['a', 'b', 'c', 'd', 'e']
c = [a] * 3
b = a

当您输入b in c时,您将获得True

在这种情况下

c = [a] * 3(围绕a的[]

将返回:

[['a', 'b', 'c', 'd', 'e'], ['a', 'b', 'c', 'd', 'e'], ['a', 'b', 'c', 'd', 'e']]