gpt4 book ai didi

列表和列表中项目的Python

转载 作者:太空狗 更新时间:2023-10-30 01:54:56 25 4
gpt4 key购买 nike

这个问题对某些人来说可能非常简单明了,但不知为何我一直无法在网上找到答案。通过修改 IDLE 并试图了解它的工作原理,我没有找到答案。 当指定多个项目时,for 循环如何工作?

a = [1,2,3,4,5]
b = [6,7,8,9,0]
for item in a and b:
print 'why does this setup give the list b but nothing from a?'

跟进问题:

1) 其他运算符可能会发生什么,例如 ornot

2) 这是正确的用法吗?如果是这样,它是否凌乱、不安全或不受欢迎?

最佳答案

所以,您有两个列表:

>>> a = [1,2,3,4,5]
>>> b = [6,7,8,9,0]

...并且您想遍历 a 和 b。那么 a 和 b 到底是什么?

>>> a and b
[6, 7, 8, 9, 0]

这可能看起来很奇怪,但这是关于 Python 的两个事实的结果:

  1. 每个对象都是True-ish 或False-ish。例如:

    >>> bool(a)
    True
    >>> bool(b)
    True

    事实上,除了空列表 [] 之外的所有列表都是 True-ish。

  2. Python 使用 short-circuit evaluation ,这意味着对于 a 和 b,它:

    • 检查aTrue-ish还是False-ish

    • 如果 aFalse-ish,计算结果为 a

    • 如果 aTrue-ish,计算结果为 b

    遵循这些规则,您应该能够明白为什么 a 和 b 在您的案例中计算为 [6, 7, 8, 9, 0](以及以下内容实际值 TrueFalse 组合的相同规则将向您表明短路评估确实有意义)。

如果您实际上想做的是遍历 a 中的项目然后遍历 b 中的项目,您可以只使用 +运算符连接它们:

>>> for item in a + b:
... print item,
...
1 2 3 4 5 6 7 8 9 0

关于您的后续问题:

What might happen with other operators, such as or and not?

or 的短路评估规则不同(您可以自己查找它们或直接点击上面的链接),并且在您的情况下是 a 或 b 计算结果为 [1, 2, 3, 4, 5](换句话说,a)。

not 始终为 False 值返回 True,为 True< 返回 False/code>-ish 值,并且由于您无法遍历 TrueFalse,您将得到一个 TypeError

Is this proper usage, even? If so, is it messy, unsafe, or frowned upon?

好吧,这并没有什么违法的,但是正如您所见,它并没有按照您的意愿行事。在某些情况下,(ab)使用短路评估来选择要迭代的可迭代对象可能会有所帮助,但这不是其中之一。

关于列表和列表中项目的Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17625262/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com