如何用if条件对多个数组执行追加操作



我正在用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)

hour为空数组。

hour成为列表的列表,例如,hour = [[] for _ in range(24)],这样hour[7]就会给你hour7的任何东西,等等。然后您可以简单地执行

hour[datetime_obj.hour].append(a)

没有if或循环。

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

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

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

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

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

最新更新