Python 3元组迭代。Bug还是预期行为?
如果我有一个包含单个iterable项(列表或元组)的父列表,并且我在父列表上迭代,循环运行一次,我得到子列表或元组作为单个参数,但是如果我对父列表使用元组,则循环实际上在子列表上迭代,循环几个,如下面的代码片段所示。这是预期的行为还是需要报告为错误 非常感谢,, 大卫·肖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
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')
trytest=((2,'two'),)
,您将得到您想要的。你需要逗号((2,'two'))==(2,'two')
是真的
但是((2,'two'),)==(2,'two')
是假的
尝试测试=((2,'two'))括号不构成元组。逗号构成元组
。我已经使用Python 6年了,我不知道这一点!谢谢你。@Gabriel好吧,唯一的例外是x=()
生成一个空元组,但其他情况下,只有正确分组才需要括号。