Jam*_*pam 4 python string tuples python-2.7 python-3.x
以下两者有何不同:
>>> s = 'string'
>>> tuple(s)
('s', 't', 'r', 'i', 'n', 'g')
>>> tuple([s])
('string',)
>>> tuple((s))
('s', 't', 'r', 'i', 'n', 'g')
>>> tuple((s,))
('string',)
>>>
Run Code Online (Sandbox Code Playgroud)
字符串是一个可迭代的对象,这就是为什么它在元组内分成多个元素?
元组不是由括号决定的,而是由逗号决定的:
>>> (1)
1
>>> (1,)
(1,)
>>> (1),
(1,)
>>> 1
1
>>> 1,
(1,)
Run Code Online (Sandbox Code Playgroud)
删除中间括号,直到确定表达式:
>>> tuple((((('string')))))
('s', 't', 'r', 'i', 'n', 'g')
>>> tuple((((('string'))),))
('string',)
>>> tuple((((('string'),)),))
(('string',),)
Run Code Online (Sandbox Code Playgroud)
你会看到 Python 是如何使用ast解析这些表达式的
>>> import ast
>>> ast.literal_eval("((((('string')))))")
'string'
>>> ast.literal_eval("((((('string')))),)")
('string',)
Run Code Online (Sandbox Code Playgroud)
tuple(('string'))并向您展示为什么与tuple('string'). 额外的括号不会创建元组,只会被解析器丢弃。