我正在用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
。
你可以在这里查看相关讨论;为了方便和功能,建议避免使用这些重复的顺序命名变量!