我有两个时间清单(time
有140个不同的时间戳元素,sessionStart
有13个元素记录了审判的开始)。我需要比较这两个列表,以找出time
中的每个元素何时大于sessionStart
中的第一个元素但小于sessionStart
中的第二个元素。如果该代码与空列表sessionStart
匹配,则应该在start
的第一个元素后附加。运行时,start
保持空白
x = 0
while x < len(time):
i = 0
while i < len(sessionStart)-1 and x < len(time):
if time[x] >= sessionStart[i] and time[x] < sessionStart[i+1]:
start.append(sessionStart[i])
i += 1
else:
x += 1
答案 0 :(得分:0)
start
列表必须在使用前声明,并且应在外部您正在使用的任何循环中,否则它将被覆盖。
您还可以使用几个python函数更简单地遍历这些列表:
start = []
for element in time:
for i in range(len(sessionStart)-1):
if element >= sessionStart[i] and element < sessionStart[i+1]:
start.append(sessionStart[i])
for x in my_list
将遍历每个元素(可以是
与名为x
的列表中的变量my_list
一起使用。 for in range(value)
从0迭代到(value-1)的长度,因此
无需使用索引变量,每次都添加1 此外,如果要比较时间戳,则应使用datetime library
将它们转换为日期时间对象。例如,如果您的时间戳是“ 2018-08-15”,则可以通过执行datetime.datetime.strptime(timestamp, '%Y-%m-%d')
因此在循环中使用的样子:
from datetime import datetime
start = []
for timestamp in time:
timestamp = datetime.strptime(timestamp, '%Y-%m-%d')
for i in range(len(sessionStart)-1):
if timestamp >= datetime.strptime(sessionStart[i], '%Y-%m-%d')
and timestamp < datetime.strptime(sessionStart[i+1], '%Y-%m-%d'):
start.append(sessionStart[i])
当然,假设您的时间戳为YYYY-MM-DD格式(我确定不是),则必须根据您的时间戳格式更新格式字符串,您还可以获得秒,毫秒,分钟等,在上面的链接上