首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python for-按类别分隔的循环

Python for-按类别分隔的循环
EN

Stack Overflow用户
提问于 2013-02-19 22:37:47
回答 1查看 179关注 0票数 1

我刚刚开始用Python开发胡迪尼建模软件。

我想做的是创建一个包含“点坐标”和“楼层值”的列表/字典。然后,我想对具有匹配级别属性的每组点坐标使用一个for循环。

到目前为止,我得到的是:

代码语言:javascript
复制
for point in geo.points():
    for i in range(-1,levels):
        if i == -1:
            pos = point.position()
        else:       
            pos = point.position() + hou.Vector3((0, level_height,0)) 
        coord = []
        coord.append(pos)
        for position in coord:
            point = geo.createPoint()
            point.setPosition(position)
            point.setAttribValue(pointlevel, i+1)
            point.setAttribValue(building, cluster)

我真正想做的是:

代码语言:javascript
复制
for each buildinglevel:   
    do for loop for all points with that buildinglevel

我的知识有限,但我知道我想要实现什么,最简单的方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2013-02-19 22:41:18

您要查找的函数名为itertools.groupby()groupby()将根据您提供的键对迭代器进行分组,前提是输入已经排序到这样的组中。

代码语言:javascript
复制
from itertools import groupby

for pointlevel, points in groupby(geo.points(), key=pointlevel_of_point):
    for point in points:
        # do something with all points for this pointlevel.

其中,pointlevel_of_point是一个函数,它返回geo.points()返回的任意点的高程。

groupby()所做的是为您提供key函数的当前返回值,以及一个新的迭代器,该迭代器保证返回key函数返回值不变的所有元素。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14960069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档