python - 如何忽略第一个屈服值?
问题描述
以下代码仅用于说明目的。
def get_messages_from_redis():
for item in self.pubsub.listen():
yield (item['channel'], item['data']) # how to ignore the first yield?
我知道以下方式可以忽略第一个屈服值:
g = get_messages_from_redis()
next(g)
但是如何忽略这个get_messages_from_redis()
呢?(counter可以用来控制是否让步,但是有没有更好的方法呢?)
解决方案
在屈服之前迭代你的函数。我不确定您的可迭代对象到底是什么,但这是一个假设list
.
def get_messages_from_redis():
for item in self.pubsub.listen()[1:]:
yield item['channel'], item['data']
对于更通用的解决方案,您可以创建可迭代的迭代器,迭代第一个,然后循环并从那里产生。注意:这主要是为了更广泛的覆盖范围,我不确定这可能会对某些迭代产生什么负面影响。
def iter_skip_first(i):
iterable = iter(i)
next(iterable)
for i in iterable:
yield i
li = [1, 2, 3, 4]
d = {"one": 1, "two": 2, "three": 3, "four": 4}
print(*iter_skip_first(li))
print(*iter_skip_first(d))
推荐阅读
- html - 为什么当我将鼠标悬停在按钮上时它不起作用?
- node.js - 启动开发服务器...编译时出现警告。在 Windows 10 上,MERN 堆栈,适用于 Windows 的 GIT Bash
- ios - URL(fileURLWithPath: Bundle.main.path(forResource: "ports", ofType: "geojson")!) 为零?
- c# - 如何在.net核心中传递unc凭证
- c - 为什么 b 的值是 100?
- php - 在一个查询中查询 2 个数据库
- mysql - 布尔模式下的 MySQL FullText:搜索包含“+”作为字符串一部分的关键字
- javascript - 与 jQuery 同步并使用向上/向下箭头键时,滑块(输入范围)和组合框(选择)之间的奇怪交互
- python-3.x - 为什么 imblearn 可以使用 jupyter notebook python 2 而不是 3?
- angular - Angular 如何动态设置(运行时)--deploy-url?