相关疑难解决方法(0)

构建一个基本的Python迭代器

如何在python中创建迭代函数(或迭代器对象)?

python iterator object

545
推荐指数
8
解决办法
34万
查看次数

在Python中汇总一个数字列表

我有一个数字列表,如[1,2,3,4,5...],我想计算(1+2)/2,第二,(2+3)/2第三, (3+4)/2等等.我怎样才能做到这一点?

我想将第一个数字与第二个数字相加并除以2,然后将第二个数字与第三个相加并除以2,依此类推.

另外,我如何总结一个数字列表?

a = [1, 2, 3, 4, 5, ...]
Run Code Online (Sandbox Code Playgroud)

是吗:

b = sum(a)
print b
Run Code Online (Sandbox Code Playgroud)

得到一个号码?

这对我不起作用.

python sum list

345
推荐指数
10
解决办法
154万
查看次数

迭代列表中的每两个元素

如何进行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万
查看次数

什么是pythonic方法来检测python'for'循环中的最后一个元素?

我想知道对for循环中的最后一个元素进行特殊处理的最佳方法(更紧凑和"pythonic"方式).有一段代码只能元素之间调用,在最后一个元素中被抑制.

以下是我目前的工作方式:

for i, data in enumerate(data_list):
    code_that_is_done_for_every_element
    if i != len(data_list) - 1:
        code_that_is_done_between_elements
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法?

注意:我不想使用hacks,例如使用reduce;)

python for-loop idioms fencepost

166
推荐指数
10
解决办法
15万
查看次数

如何遍历除列表的最后一项之外的所有项目?

我想循环检查每个项目的列表与其后面的项目.

有没有办法可以循环使用除了最后一项使用x中的所有项目?如果可以的话,我宁愿不使用索引.

注意

freespace回答了我的实际问题,这就是我接受答案的原因,但是SilentGhost回答了我应该问的问题.

为混乱道歉.

python

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

滚动或滑动窗口迭代器?

我需要一个可在序列/迭代器/生成器上迭代的滚动窗口(也称为滑动窗口).默认的Python迭代可以被认为是一种特殊情况,窗口长度为1.我目前正在使用以下代码.有没有人有更多的Pythonic,更简洁,或更有效的方法来做到这一点?

def rolling_window(seq, window_size):
    it = iter(seq)
    win = [it.next() for cnt in xrange(window_size)] # First window
    yield win
    for e in it: # Subsequent windows
        win[:-1] = win[1:]
        win[-1] = e
        yield win

if __name__=="__main__":
    for w in rolling_window(xrange(6), 3):
        print w

"""Example output:

   [0, 1, 2]
   [1, 2, 3]
   [2, 3, 4]
   [3, 4, 5]
"""
Run Code Online (Sandbox Code Playgroud)

python algorithm

142
推荐指数
10
解决办法
8万
查看次数

迭代Python列表中的项目对

可能的重复:
在Python中迭代列表(当前,下一个)
迭代列表中的每两个元素

是否可以在Python中以下列方式迭代列表(将此代码视为伪代码)?

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

它应该产生

[5, 7]
[7, 11]
[11, 4]
[4, 5]
Run Code Online (Sandbox Code Playgroud)

python loops list

85
推荐指数
6
解决办法
9万
查看次数

迭代列表中的所有连续项对

给出一个清单

l = [1, 7, 3, 5]
Run Code Online (Sandbox Code Playgroud)

我想迭代所有连续列表项对(1,7), (7,3), (3,5),即

for i in xrange(len(l) - 1):
    x = l[i]
    y = l[i + 1]
    # do something
Run Code Online (Sandbox Code Playgroud)

我想以更紧凑的方式做到这一点,比如

for x, y in someiterator(l): ...
Run Code Online (Sandbox Code Playgroud)

有没有办法使用内置的Python迭代器来做到这一点?我确定该itertools模块应该有一个解决方案,但我无法弄明白.

python iterator list

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

如何在Python生成器中展望一个元素?

我无法弄清楚如何在Python生成器中展望一个元素.一看,它就消失了.

这就是我的意思:

gen = iter([1,2,3])
next_value = gen.next()  # okay, I looked forward and see that next_value = 1
# but now:
list(gen)  # is [2, 3]  -- the first value is gone!
Run Code Online (Sandbox Code Playgroud)

这是一个更实际的例子:

gen = element_generator()
if gen.next_value() == 'STOP':
  quit_application()
else:
  process(gen.next())
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我写一个发电机,你可以看一个元素前进吗?

python generator peek

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

是否需要范围(len(a))?

人们常常在SO的python问题中找到这种类型的表达式.要么只是访问iterable的所有项目

for i in range(len(a)):
    print(a[i])
Run Code Online (Sandbox Code Playgroud)

这只是一种繁琐的写作方式:

for e in a:
    print(e)
Run Code Online (Sandbox Code Playgroud)

或者为了分配可迭代的元素:

for i in range(len(a)):
    a[i] = a[i] * 2
Run Code Online (Sandbox Code Playgroud)

哪个应该是相同的:

for i, e in enumerate(a):
     a[i] = e * 2
# Or if it isn't too expensive to create a new iterable
a = [e * 2 for e in a]
Run Code Online (Sandbox Code Playgroud)

或者对索引进行过滤:

for i in range(len(a)):
    if i % 2 == 1: continue
    print(a[i])
Run Code Online (Sandbox Code Playgroud)

可以这样表达:

for e in a [::2]:
    print(e)
Run Code Online (Sandbox Code Playgroud)

或者当您只需要列表的长度而不是其内容时:

for _ in range(len(a)):
    doSomethingUnrelatedToA() …
Run Code Online (Sandbox Code Playgroud)

python for-loop range

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

标签 统计

python ×10

list ×4

for-loop ×2

iterator ×2

algorithm ×1

fencepost ×1

generator ×1

idioms ×1

loops ×1

object ×1

peek ×1

range ×1

sum ×1