加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python for循环,如何找到下一个值(对象)?

发布时间:2020-12-20 12:41:53 所属栏目:Python 来源:网络整理
导读:嗨,我正在尝试使用for循环找到每两个对象之间的差异减去彼此. 那么,如何在for循环中找到下一个值呢? for entry in entries: first = entry # Present value last = ?????? # The last value how to say? diff = last = first 解决方法 应该注意的是,这些解
嗨,我正在尝试使用for循环找到每两个对象之间的差异减去彼此.
那么,如何在for循环中找到下一个值呢?

for entry in entries:
    first = entry      # Present value
    last = ??????      # The last value how to say?
    diff = last = first

解决方法

应该注意的是,这些解决方案都不适用于发电机.为此,请参阅Glenn Maynards的优秀解决方案.

使用zip作为小列表:

for current,last in zip(entries[1:],entries):
     diff = current - last

这会生成列表的副本(以及列表的两个副本中的元组列表),因此最好使用itertools来处理更大的列表

import itertools as it

items = it.izip(it.islice(entries,1,None),entries)
for current,last in items:
    diff = current - last

这将避免制作列表的副本和制作元组列表.

另一种不制作副本的方法是

entry_iter = iter(entries)
entry_iter.next() # Throw away the first version
for i,entry in enumerate(entry_iter):
    diff = entry - entries[i]

而另一种方式是:

for i in xrange(len(entries) - 1):
    diff = entries[i+1] - entries[i]

这将创建一个迭代器,用于索引条目并将其前进一个.然后使用枚举来获得项目的指示. indice从0开始,因此指向前一个元素,因为我们循环了一个项目.

另外,正如Tyler在评论中指出的那样,如果你只想迭代这些差异,那么循环对于这样一个简单的问题可能是过度的.

diffs = (current - last for current,last in 
         it.izip(it.islice(entries,entries))

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读