比较和附加不同长度的python列表

时间:2018-06-28 17:56:02

标签: python list append comparison

我有两个时间清单(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

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格式(我确定不是),则必须根据您的时间戳格式更新格式字符串,您还可以获得秒,毫秒,分钟等,在上面的链接上