Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.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 3元组迭代。Bug还是预期行为?_Python_Python 3.x_Python 2.7 - Fatal编程技术网

Python 3元组迭代。Bug还是预期行为?

Python 3元组迭代。Bug还是预期行为?,python,python-3.x,python-2.7,Python,Python 3.x,Python 2.7,如果我有一个包含单个iterable项(列表或元组)的父列表,并且我在父列表上迭代,循环运行一次,我得到子列表或元组作为单个参数,但是如果我对父列表使用元组,则循环实际上在子列表上迭代,循环几个,如下面的代码片段所示。这是预期的行为还是需要报告为错误 非常感谢,, 大卫·肖 test = [(1, 'one')] for i in test: print(test) 输出: (1, 'one) 2 'two' 蟒蛇 test = ((2, 'two')) for i in test

如果我有一个包含单个iterable项(列表或元组)的父列表,并且我在父列表上迭代,循环运行一次,我得到子列表或元组作为单个参数,但是如果我对父列表使用元组,则循环实际上在子列表上迭代,循环几个,如下面的代码片段所示。这是预期的行为还是需要报告为错误

非常感谢,, 大卫·肖

test = [(1, 'one')]
for i in test:
    print(test)
输出:

(1, 'one)
2
'two'
蟒蛇

test = ((2, 'two'))
for i in test:
    print(test)
输出:

(1, 'one)
2
'two'

括号不能构成元组。逗号构成元组。这些都是整数1的相同值:

x = ((1))
x = (1)
x = 1
与之相比:

x = ((1,'one'))
x = (1,'one')
x = 1,'one'
它们都是一个2元组

使用以下方法将2元组分组到1元组中:

x = (1,'one'),    

test=((2,'two'))
没有创建嵌套元组,将其打印出来,您会看到它与
test=(2,'two')
相同。如果要创建一个长度为1的元组,则需要在后面加一个逗号。你可以称之为元组的怪癖
test=((2,'two'),)
如果没有逗号,值“test”实际上不是一个元组,它像表达式一样计数,只返回
(2,'two')
try
test=((2,'two'),)
,您将得到您想要的。你需要逗号
((2,'two'))==(2,'two')
真的
但是
((2,'two'),)==(2,'two')
假的
尝试测试=((2,'two'))
括号不构成元组。逗号构成元组
。我已经使用Python 6年了,我不知道这一点!谢谢你。@Gabriel好吧,唯一的例外是
x=()
生成一个空元组,但其他情况下,只有正确分组才需要括号。