首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有没有一种方法可以在for循环之前不初始化列表的情况下向for循环中的列表中添加内容?

有没有一种方法可以在for循环之前不初始化列表的情况下向for循环中的列表中添加内容?
EN

Stack Overflow用户
提问于 2021-11-24 19:24:01
回答 1查看 45关注 0票数 0

我正在尝试对具有多个属性的类进行排序,并将每个属性放入一个列表中。这在单元测试中用来确认我的类是否正确地对它们进行了排序。有没有一种方法可以在for循环中创建一个列表,并在一行(就像在列表理解中)向其中添加内容?

例如,为了现在对它们进行排序,我必须使用如下所示:

objectsObject类项目的列表

代码语言:javascript
运行
复制
red_objects = []
blue_objects = []
green_objects = []
for object in objects:
    if object.color == 'red':
        red_objects.append(object.name)
    elif object.color == 'blue':
        blue_objects.append(object.name)
    elif object.color == 'green':
        green_objects.append(object.name)

或者类似这样的东西:

代码语言:javascript
运行
复制
red_objects = [object.name for object in objects if object.color == 'red']
blue_objects = [object.name for object in objects if object.color == 'blue']
green_objects = [object.name for object in objects if object.color == 'green']

显然,第二种选择要干净得多,但是我必须分别运行三次循环。有没有某种方法可以将这两种方法结合起来,这样我就只能运行一次循环,但我可以用类似于列表理解的方式创建列表?

EN

回答 1

Stack Overflow用户

发布于 2021-11-24 19:29:47

也许可以使用dict

代码语言:javascript
运行
复制
red_objects, blue_objects, green_objects = [],[],[]
my_dict = {'red': red_objects.append, 'blue': blue_objects.append, 'green': green_objects.append}

for object in objects:
    my_dict[object.color](object.name)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70101852

复制
相关文章

相似问题

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