如何对多个数组执行带if条件的追加

2024-09-30 02:30:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Python编写以下代码,我想使用for条件完成以下工作

                if (datetime_obj.hour==7):
                    hour7.append(a)
                if (datetime_obj.hour==8):
                    hour8.append(a)
                if (datetime_obj.hour==9):
                    hour9.append(a)
                if (datetime_obj.hour==10):
                    hour10.append(a)
                if (datetime_obj.hour==11):
                    hour11.append(a)
                if (datetime_obj.hour==12):
                    hour12.append(a)
                if (datetime_obj.hour==13):
                    hour13.append(a)
                if (datetime_obj.hour==14):
                    hour14.append(a)
                if (datetime_obj.hour==15):
                    hour15.append(a)

小时是空数组


Tags: 代码objfordatetimeif条件appendhour
2条回答

通过放弃对每个空列表(例如hour1hour2)的特定引用,您的代码似乎会大大简化。相反,您应该创建一些保存列表的结构,并允许您以合理的方式访问它们。现有答案使用嵌套列表,这是一个很好的选择。另一种方法是使用dict

hours = {i:[] for i in range(24)}
hours[datetime_obj.hour].append(a)

hours初始化为字典,其中每个键都是一个整数(表示一天中的一小时),每个值都是一个单独的空列表。您可以直接使用datetime_obj.hour选择这些空列表,然后附加a

您可以在here中查看相关讨论;为了方便和功能,建议避免这些重复的顺序命名变量

制作hour一个列表列表,例如hour = [[] for _ in range(24)],这样hour[7]会给你hour7的任何东西,等等。然后你可以简单地做

hour[datetime_obj.hour].append(a)

没有ifs或循环

如果datetime_obj.hour所取的值不是从0到某个数字的连续值,则使用列表字典

相关问题 更多 >

    热门问题