Python中"iterable","iterator"和"iteration"的最基本定义是什么?
我已阅读多个定义,但我无法确定其确切含义,因为它仍然不会沉入其中.
有人可以帮助我解释外行人的3个定义吗?
我知道我可以使用类似于string[3:4]在Python中获取子字符串的东西,但3是什么意思somesequence[::3]?
我在蟒蛇玩耍.我在IDLE中使用了以下代码:
p = [1, 2]
p[1:1] = [p]
print p
Run Code Online (Sandbox Code Playgroud)
输出是:
[1, [...], 2]
Run Code Online (Sandbox Code Playgroud)
这是什么[…]?有趣的是,我现在可以将其用作无限列表列表,即
p[1][1][1]....
Run Code Online (Sandbox Code Playgroud)
只要我愿意,我就可以写上面的内容,但它仍然有用.
编辑:
我想继承一个位于当前目录之上的文件中的类.
是否可以相对导入该文件?
我经常发现自己在python中编写if/elif/else构造,并且我希望包含可能发生的选项,但相应的操作是什么都不做.我意识到我可以排除那些if语句,但为了便于阅读,我发现将它们全部包含在内是有帮助的,所以如果你查看代码,你可以看到每个选项会发生什么.如何编写no-op?目前,我这样做:
no_op = 0
if x == 0:
y = 2 * a
elif x == 1:
z = 3 * b
elif x == 3:
no_op
Run Code Online (Sandbox Code Playgroud)
(代码实际上比这长得多,而且更复杂.这只是为了说明结构).
我不喜欢使用变量作为无操作,但这是我能想到的最好的方式.有没有更好的办法?
这出现在 Python的隐藏功能中,但我看不到可以解释该功能如何工作的好文档或示例.
我已经阅读了__getitem__Python文档中的大部分文档以及stackoverflow,因此这不是一个重复的问题.但我仍然无法理解它的含义.
所以我能理解的__getitem__是用于实现类似的调用self[key].但它的用途是什么?
假设我有一个以这种方式定义的python类:
class Person:
def __init__(self,name,age):
self.name = name
self.age = age
def __getitem__(self,key):
print ("Inside `__getitem__` method!")
return getattr(self,key)
p = Person("Subhayan",32)
print (p["age"])
Run Code Online (Sandbox Code Playgroud)
这会按预期返回结果.但为什么要__getitem__首先使用?我也听说过__getitem__内部的Python调用.但它为什么这样做呢?
有人可以更详细地解释一下吗?
x [...]下面是什么意思?
a = np.arange(6).reshape(2,3)
for x in np.nditer(a, op_flags=['readwrite']):
x[...] = 2 * x
Run Code Online (Sandbox Code Playgroud) 我不理解Python文档的以下部分:
http://docs.python.org/reference/expressions.html#slicings
这是指列表切片(x=[1,2,3,4]; x[0:2])..?特别是涉及省略号的部分..
slice_item ::= expression | proper_slice | ellipsis
Run Code Online (Sandbox Code Playgroud)
作为表达式的切片项的转换是该表达式.省略号切片项的转换是内置的省略号对象.
当我找到abc模块(https://docs.python.org/3/library/abc.html)时,我只是在寻找在 Python 中定义抽象基类的方法。
经过一番阅读,我看到了以下课程:
class C(ABC):
@abstractmethod
def my_abstract_method(self, ...):
...
@classmethod
@abstractmethod
def my_abstract_classmethod(cls, ...):
...
Run Code Online (Sandbox Code Playgroud)
想知道三个点,我发现它被称为Ellipsis( https://docs.python.org/3/library/constants.html#Ellipsis )。到目前为止,我只在结合类型提示的情况下看到并使用过它,在这种情况下它非常有意义。
但是为什么要在抽象方法的定义中使用省略号呢?就个人而言,我要么做
def my_abstract_method(self):
raise RuntimeError("NotImplemented")
Run Code Online (Sandbox Code Playgroud)
或者
def my_abstract_method(self):
pass
Run Code Online (Sandbox Code Playgroud)
那么为什么pass官方文档中更喜欢省略号呢?它只是自以为是吗?
python ×10
ellipsis ×2
iterator ×2
numpy ×2
slice ×2
syntax ×2
directory ×1
iterable ×1
iteration ×1
list ×1
module ×1
python-2.7 ×1
python-3.x ×1
subclass ×1
terminology ×1