Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python “为什么?”;在;列表和元组的行为是否不同?_Python_Python 3.x - Fatal编程技术网

Python “为什么?”;在;列表和元组的行为是否不同?

Python “为什么?”;在;列表和元组的行为是否不同?,python,python-3.x,Python,Python 3.x,代码 对于('sin','cos','sinc','sin^2')中的项目: 打印(项目不在('sin^2')) 产生结果 False True True False True True True False 但是 对于('sin','cos','sinc','sin^2')中的项目: 打印(项目不在['sin^2']中) 产生结果 False True True False True True True False 为什么?表达式被视为带括号的字符串,而不是元组。所以它最终是一个子

代码

对于('sin','cos','sinc','sin^2')中的项目:
打印(项目不在('sin^2'))
产生结果

False
True
True
False
True
True
True
False
但是

对于('sin','cos','sinc','sin^2')中的项目:
打印(项目不在['sin^2']中)
产生结果

False
True
True
False
True
True
True
False

为什么?

表达式被视为带括号的字符串,而不是元组。所以它最终是一个子串匹配。要将其定义为单个元素元组,必须有一个尾随逗号:

print(item not in ('sin^2',))

这里描述了这一点:

第一个元组中没有元组。您只有一个字符串。
('sin^2')
不是元组,而是字符串。逗号构成元组,而不是圆括号。注意,
mytuple=1,2
是有效的元组,
mytuple=3、
mytuple=(3,)
,而
mytuple=(3)
int