我想知道对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)
这有效并且符合我的预期,但是有更多惯用或有效的方法来做同样的事情吗?
嗨,大家好.
我有一个包含很多元素的列表,我使用for循环迭代列表.例如
li = [2,31,321,41,3423,4,234,24,32,42,3,24,,31,123]
for (i in li):
print i
Run Code Online (Sandbox Code Playgroud)
但是我想得到i的前一个元素,如何实现呢?
我不必使用for循环,所以请随意更改任何内容.谢谢!
我有一个像这样组织的列表:
[('down', 0.0098000000000000309),
('up', 0.0015000000000000568),
('down', 0.008900000000000019),
('down', 0.023300000000000098),
('down', 0.011599999999999944),
('down', 0.0027000000000000357),
('up', 0.0023999999999999577),
('up', 0.0065000000000000613),
('down', 0.0057000000000000384),
('down', 0.018400000000000083),
('up', 0.009300000000000086),
('down', 0.0038000000000000256),
('down', 0.00050000000000005596),
('up', 0.0082000000000000961), .....
Run Code Online (Sandbox Code Playgroud)
什么是"向后比较"的最佳方式?,基本上我想要返回"是"(或者其他......)如果我们得到一系列的2"下降",接着是一个"向上",第二个值低于0.0095.
我希望他有道理..
是否可以在for循环中获取下一个迭代
for x,y dict.iteritems()
我对x的下一项感兴趣,而没有向前移动迭代器。
在Python 2.7.x中
任何人都可以指出我获得列表的上一个和下一个项目的实用方法.例如:
my_list = [100, 200, 300, 400]
Run Code Online (Sandbox Code Playgroud)
是否有实用的方法来获取上一个和下一个项目(300和100).
我my_list[my_list.index(400) - 1]用来成功获得上一个项目.Python并不介意明显地得到负面索引.但是,如果我尝试my_list[my_list.index(400) + 1]它不喜欢索引大于列表中的项目数.这是有道理的.
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
Run Code Online (Sandbox Code Playgroud)
我想我可以使用循环来循环并获得它 - 我只是希望有一个更简单的解决方案.我正在考虑使用iter()但我似乎无法弄清楚是否可以设置索引.