相关疑难解决方法(0)

使用'for'循环迭代字典

我对以下代码感到有点困惑:

d = {'x': 1, 'y': 2, 'z': 3} 
for key in d:
    print key, 'corresponds to', d[key]
Run Code Online (Sandbox Code Playgroud)

我不明白的是这个key部分.Python如何识别它只需要从字典中读取密钥?keyPython中是一个特殊的词吗?或者它只是一个变量?

python dictionary python-2.7

2901
推荐指数
13
解决办法
411万
查看次数

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

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

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

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

python iteration iterator iterable terminology

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

在Python中将列表迭代为对(当前,下一个)

我有时需要在Python中迭代一个列表,查看"current"元素和"next"元素.到目前为止,我已经完成了以下代码:

for current, next in zip(the_list, the_list[1:]):
    # Do something
Run Code Online (Sandbox Code Playgroud)

这有效并且符合我的预期,但是有更多惯用或有效的方法来做同样的事情吗?

python

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

在Python中是否存在可变的命名元组?

任何人都可以修改namedtuple或提供替代类,以便它适用于可变对象吗?

主要是为了可读性,我想要类似于namedtuple这样做:

from Camelot import namedgroup

Point = namedgroup('Point', ['x', 'y'])
p = Point(0, 0)
p.x = 10

>>> p
Point(x=10, y=0)

>>> p.x *= 10
Point(x=100, y=0)
Run Code Online (Sandbox Code Playgroud)

必须可以腌制生成的对象.并且根据命名元组的特征,当表示时,输出的排序必须与构造对象时参数列表的顺序相匹配.

python mutable namedtuple

105
推荐指数
6
解决办法
3万
查看次数

Python中的循环列表迭代器

我需要迭代一个循环列表,可能多次,每次从最后访问的项目开始.

用例是连接池.客户端请求连接,迭代器检查指向的连接是否可用并返回它,否则循环直到找到可用的连接.

有没有一种巧妙的方法在Python中做到这一点?

python iterator list

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

为什么在类上定义__getitem__使它在python中可迭代?

为什么在类上定义__getitem__使其可迭代?

例如,如果我写:

class b:
  def __getitem__(self, k):
    return k

cb = b()

for k in cb:
  print k
Run Code Online (Sandbox Code Playgroud)

我得到输出:

0
1
2
3
4
5
6
7
8
...
Run Code Online (Sandbox Code Playgroud)

我真的希望看到"for c in cb:"中返回的错误

python iterator overloading

58
推荐指数
5
解决办法
2万
查看次数

什么使python中的东西可迭代

是什么让Python中的东西可迭代?即.可以用它循环for

我可以在Python中创建一个可迭代的类吗?如果是这样,怎么样?

python

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

Python for循环和迭代器行为

我想了解更多iterators,所以如果我错了请纠正我.

迭代器是一个对象,它具有指向下一个对象的指针,并被读取为缓冲区或流(即链接列表).它们特别有效,因为它们只是通过引用而不是使用索引来告诉您接下来的内容.

但是我仍然不明白为什么会发生以下行为:

In [1]: iter = (i for i in range(5))

In [2]: for _ in iter:
   ....:     print _
   ....:     
0
1
2
3
4

In [3]: for _ in iter:
   ....:     print _
   ....:     

In [4]: 
Run Code Online (Sandbox Code Playgroud)

在通过迭代器(In [2])的第一个循环后,它就好像被消耗并留空,所以第二个循环(In [3])不打印任何内容.

但是我从未为iter变量赋予新值.

for循环的引擎下真正发生了什么?

python iterator

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

在Python中跳过迭代变量的N值的最佳方法是什么?

在许多语言中,我们可以做类似的事情:

for (int i = 0; i < value; i++)
{
    if (condition)
    {
        i += 10;
    }
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能在Python中做同样的事情?以下(当然)不起作用:

for i in xrange(value):
    if condition:
        i += 10
Run Code Online (Sandbox Code Playgroud)

我可以这样做:

i = 0
while i < value:
  if condition:
    i += 10
  i += 1
Run Code Online (Sandbox Code Playgroud)

但我想知道在Python中是否有更优雅(pythonic?)的方式.

python iterator

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

生成器不是迭代器?

我有一个生成器(一个产生东西的函数),但是当试图将它传递给gensim.Word2Vec我时,我得到以下错误:

TypeError:您不能将生成器作为句子参数传递.尝试一个迭代器.

发生器不是一种迭代器吗?如果没有,我如何从中制作迭代器?

看一下库代码,它似乎只是简单地迭代句子for x in enumerate(sentences),这对我的生成器来说效果很好.那么是什么导致错误?

python gensim word2vec

20
推荐指数
2
解决办法
4361
查看次数