迭代包含一个字符串的元组实际上迭代字符

时间:2016-06-17 14:28:39

标签: python string python-3.x tuples

在迭代只包含1个字符串的元组时,我注意到了一种奇怪的行为:

foo = ("hello")
for entry in foo:
    print(entry)

输出:

h
e
l
l
o

但我希望这里只迭代一次,输出"你好"连续。

如果我的tupple包含2个条目,那就是发生了什么:

foo = ("hello", "world!")
for entry in foo:
    print(entry)

输出:

hello
world!

这是CPython实施中的错误吗? 即使更奇怪,如果我使用列表而不是元组,这不会发生:

foo = ["hello"]
for entry in foo:
    print(entry)

输出:

hello

2 个答案:

答案 0 :(得分:0)

你有一个字符串而不是一个元组:

>>> type(('hello'))
<class 'str'>
>>> type(('hello',))
<class 'tuple'>

答案 1 :(得分:0)

("hello")不是一个元组 - 它是一个用括号括起来的字符串,在这种情况下没有意义。如果你想要一个单元素元组,你需要一个逗号后面的值:

foo = ("hello",) 
# Here--------^