相关疑难解决方法(0)

迭代器,迭代和迭代究竟是什么?

Python中"iterable","iterator"和"iteration"的最基本定义是什么?

我已阅读多个定义,但我无法确定其确切含义,因为它仍然不会沉入其中.

有人可以帮助我解释外行人的3个定义吗?

python iteration iterator iterable terminology

408
推荐指数
10
解决办法
29万
查看次数

订阅序列时Python中的::(双冒号)是什么?

我知道我可以使用类似于string[3:4]在Python中获取子字符串的东西,但3是什么意思somesequence[::3]?

python syntax slice

237
推荐指数
11
解决办法
13万
查看次数

省略号[...]在列表中的含义是什么?

我在蟒蛇玩耍.我在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 list ellipsis python-2.7 python-3.x

189
推荐指数
4
解决办法
1万
查看次数

如何导入上面目录中的Python类?

我想继承一个位于当前目录之上的文件中的类.

是否可以相对导入该文件?

python directory module python-import

178
推荐指数
6
解决办法
17万
查看次数

在python中执行no-op的标准方法是什么?

我经常发现自己在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

148
推荐指数
3
解决办法
9万
查看次数

你如何在Python中使用省略号切片语法?

这出现在 Python的隐藏功能中,但我看不到可以解释该功能如何工作的好文档或示例.

python numpy subclass ellipsis slice

146
推荐指数
4
解决办法
4万
查看次数

了解__getitem__方法

我已经阅读了__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调用.但它为什么这样做呢?

有人可以更详细地解释一下吗?

python

86
推荐指数
3
解决办法
7万
查看次数

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 iterator numpy

56
推荐指数
3
解决办法
4万
查看次数

Python表达式文档中的"切片"

我不理解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)

作为表达式的切片项的转换是该表达式.省略号切片项的转换是内置的省略号对象.

python syntax

19
推荐指数
3
解决办法
8492
查看次数

何时使用 Python Ellipsis 优于“pass”?

当我找到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

18
推荐指数
4
解决办法
4537
查看次数