相关疑难解决方法(0)

迭代列表中的每两个元素

如何进行for循环或列表理解,以便每次迭代都给出两个元素?

l = [1,2,3,4,5,6]

for i,k in ???:
    print str(i), '+', str(k), '=', str(i+k)
Run Code Online (Sandbox Code Playgroud)

输出:

1+2=3
3+4=7
5+6=11
Run Code Online (Sandbox Code Playgroud)

python list

189
推荐指数
11
解决办法
17万
查看次数

在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中以列表(循环方式)迭代对

问题很简单,我想迭代遍历列表中的每个元素和成对的下一个元素(将最后一个元素包装在第一个元素中).

我想过两种非常规的方式:

def pairs(lst):
    n = len(lst)
    for i in range(n):
        yield lst[i],lst[(i+1)%n]
Run Code Online (Sandbox Code Playgroud)

和:

def pairs(lst):
    return zip(lst,lst[1:]+[lst[:1]])
Run Code Online (Sandbox Code Playgroud)

预期产量:

>>> for i in pairs(range(10)):
    print i

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

有关更多pythonic方式的任何建议吗?也许有一个我没有听说过的预定义功能?

也是一个更普遍的n折(有三胞胎,四重奏等代替对)版本可能很有趣.

python iteration tuples list

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

在python中迭代元组中的生成器

假设我有一个清单

xs = [0,1,2,3]
[some_function(current, next) for current, next in zip(xs, xs[1:])]
Run Code Online (Sandbox Code Playgroud)

我想迭代这个列表的对(当前,下一个).澄清zip创建列表[(0,1),(1,2),(2,3)]

问题是,如果xs是生成器而不是列表来实现这一点,我需要从中创建一个列表,这肯定不是最佳解决方案.

python generator lazy-evaluation

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

分块列表,包括重叠间隔

给出以下列表:

l1 = [0,1000,5000,10000,20000,30000,40000,50000]
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过查看每对连续的数字来创建它的块:

def chunker(seq, size):
    return (seq[pos:pos + size] for pos in range(0, len(seq), size))

for group in chunker(l1, 2):
   print(group)
Run Code Online (Sandbox Code Playgroud)

返回:

[0, 1000]
[5000, 10000]
[20000, 30000]
[40000, 50000]
Run Code Online (Sandbox Code Playgroud)

如何确保[1000,5000]也包括重叠的时间间隔?

预期产量:

[0, 1000]
[1000, 5000] 
[5000, 10000]
[10000, 20000]
[20000, 30000]
[30000, 40000]
[40000, 50000]
Run Code Online (Sandbox Code Playgroud)

python list chunks

1
推荐指数
2
解决办法
51
查看次数

迭代生成器中的相邻对

我想访问生成器中相邻值的重叠对。

如果它是一个列表,我可以使用

a = [5, 7, 11, 4, 5]
for v, w in zip(a[:-1], a[1:]):
    print [v, w]
Run Code Online (Sandbox Code Playgroud)

这是来自这个问题

但是当我尝试对生成器执行相同操作时,出现错误

TypeError: 'generator' object is not subscriptable
Run Code Online (Sandbox Code Playgroud)

有没有办法为发电机做到这一点?

python generator python-3.x

0
推荐指数
1
解决办法
422
查看次数

Python:拆分列表中的字典

我想将一个简单的字典转换为这样的:d = {0:0, 1:1, 2:2, 3:3}到一个字典列表,其中每个字典的元素数量与此相同(或如此):[{0:0, 2:2}, {1:1, 3:3}]。我尝试过使用简单的索引,就像我使用列表一样,但它给了我一个TypeError: unhashable type: 'slice'. 这是我现在所拥有的:

def dico_chunks(dico, n):
    if len(dico) < n:
        n = len(dico)
    return [dico[i::n] for i in range(n)]
Run Code Online (Sandbox Code Playgroud)

请记住,无论如何我都不需要按顺序排列列表。n我只需要将我的主字典分成子字典列表。

python dictionary list

-1
推荐指数
1
解决办法
2791
查看次数