我有一个需要迭代的大型元素 set
。出于调试目的, 我只想迭代前面大约10个元素。为了实现这一点,我从我的set
初始化了一个list
,通过[:10]
选择了前10个元素,并迭代了结果list
。 有没有更符合Python风格的方法?
mySet = set(df.SomeUniqueId)
myList = list(mySet)[:10]
for i, val in enumerate(myList):
...
我有一个需要迭代的大型元素 set
。出于调试目的, 我只想迭代前面大约10个元素。为了实现这一点,我从我的set
初始化了一个list
,通过[:10]
选择了前10个元素,并迭代了结果list
。 有没有更符合Python风格的方法?
mySet = set(df.SomeUniqueId)
myList = list(mySet)[:10]
for i, val in enumerate(myList):
...
我会使用itertools.islice()
。对于我来说,生成整个列表只为访问前几个项目似乎是浪费的。
for i, val in enumerate(itertools.islice(mySet, 10)):
编辑:
如果你想要随机选择(与任意地选择相对),你可以尝试使用random.sample()
来选择你的十个元素。
for i, val in enumerate(random.sample(mySet, 10)):
有很多方法可以做到这一点。使用list(set(a))将创建一个列表,根据您的集合大小可能需要很长时间。但是,由于您只需要迭代少量循环,我会使用迭代器和计数器:
count = 0
for elem in iter(mySet):
count = count + 1
if count == 10:
break
print elem
for i, val in enumerate(list(df.SomeUniqueId)[:10]): ...
- rmamyList = [el for (el, _) in zip(mySet, range(10))]
看起来很不错,它可以在不将整个集合转换为列表的情况下完成操作,并且不需要额外的导入。已在Python 3.8中测试。 - AllanLRH