如何在Python中连接两个列表?
例:
listone = [1, 2, 3]
listtwo = [4, 5, 6]
Run Code Online (Sandbox Code Playgroud)
预期结果:
>>> joinedlist
[1, 2, 3, 4, 5, 6]
Run Code Online (Sandbox Code Playgroud) 我刚刚才知道有Truthy和Falsy在Python这是与正常不同的价值观True
和False
?
是否有人可以深入解释什么truthy和falsy值?
我应该在哪里使用它们?
truthy和True
值以及falsy和False
值之间有什么区别?
我最近偶然发现了Python的NotImplemented
内置.经过一些阅读后,我确实得到了它的目的,但我不明白它为什么评估True
为布尔值.下面的例子让我觉得这是一种残酷的玩笑:
>>> class A:
... def __eq__(self, other):
... return NotImplemented
...
>>>
>>> a = A()
>>> a == 1
False
>>> bool(a.__eq__(1))
True
Run Code Online (Sandbox Code Playgroud)
我的问题很简单:为什么要NotImplemented
评价True
?
这个问题的答案和讨论刺激了这个问题.以下代码段显示了问题的关键:
>>> bool(NotImplemented)
True
Run Code Online (Sandbox Code Playgroud)
我的问题如下:
bool
价值NotImplemented
应该是True
?它感觉是unpythonic.推理为什么我认为它不直观(请忽略缺乏最佳实践):
>>> class A:
... def something(self):
... return NotImplemented
...
>>> a = A()
>>> a.something()
NotImplemented
>>> if a.something():
... print("this is unintuitive")
...
this is unintuitive
Run Code Online (Sandbox Code Playgroud)
具有如此负面含义(缺乏实施)的东西似乎是一种奇怪的行为.
相关文字来自:
未实现
这应该由二进制特殊的方法被返回(如特殊的值
__eq__()
,__lt__()
,__add__()
,__rsub__()
,等等),以指示该操作不相对于另一种类型的实施; 可通过就地二进制特殊的方法(例如被返回__imul__()
,__iand__()
为了相同的目的,等等).它的真实价值是真实的.- 来自Python Docs
为了澄清我的立场,我觉得NotImplemented
能够评估一个布尔值本身就是一种反模式.我觉得Exception更有意义,但流行的想法是在评估不同对象之间的比较时,出于性能原因选择常量单例.我想我正在寻找令人信服的理由,为什么这是选择的"方式".