我想知道对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中迭代一个列表,查看"current"元素和"next"元素.到目前为止,我已经完成了以下代码:
for current, next in zip(the_list, the_list[1:]):
# Do something
Run Code Online (Sandbox Code Playgroud)
这有效并且符合我的预期,但是有更多惯用或有效的方法来做同样的事情吗?
给出一个清单
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
模块应该有一个解决方案,但我无法弄明白.
我想迭代文件的行,并为每个文件打印一些输出.,\n
除最后一行外,所有打印的行最后都应该有一行.
我的第一种方法是使用查找hasNext()
不存在的方法.我知道StopIteration
引发了异常,但我不确定如何以Pythonic的方式使用它来实现我想要的.