gpt4 book ai didi

Python 两个列表在两个 For 循环中

转载 作者:太空宇宙 更新时间:2023-11-04 02:26:02 25 4
gpt4 key购买 nike

我这里有两个列表:

list1 = [u'2018-05-06T15:53:05.000-0400', '2018-05-06T17:53:05.000-0400']

list2 = [u'2018-05-06T15:32:24.000-0400', u'2018-05-06T15:32:29.000-0400', u'2018-05-06T15:32:36.000-0400', u'2018-05-06T15:53:05.000-0400', u'2018-05-06T16:42:41.000-0400', u'2018-05-10T00:16:12.000-0400', u'2018-05-10T00:16:23.000-0400', u'2018-05-12T17:37:42.000-0400']

我正在尝试比较两个列表中的元素,并返回 list1 中的元素 0 和 list2 中的元素 1 的差异的最小值,例如:

for value1 in list1:
value1 = datetime.strptime(value1, '%Y-%m-%dT%H:%M:%S.000-0400')
for value2 in list2:
value2 = datetime.strptime(value2, '%Y-%m-%dT%H:%M:%S.000-0400')
if value1 < value2:

value3 = value2 - value1
list3.append(value3)
print list3

打印 list3 给我:

[datetime.timedelta(0, 2976), datetime.timedelta(3, 30187), datetime.timedelta(3, 30198), datetime.timedelta(6, 6277), datetime.timedelta(3, 22987), datetime .timedelta(3, 22998), datetime.timedelta(5, 85477)]

同一个列表中的所有内容。在 list3[0] 中,我可以获得 list1 中第一个元素的最小值,但是如何获得第二个元素的最小值 list3[3 ] 如果我在 list1 中有元素 3 就循环?

我想将 list1 中的第一个元素和第二个元素的比较结果列表分开,请告诉我如何实现这一点,非常感谢!

最佳答案

如果我理解正确的话,您可以将时间增量分隔在不同的列表中,然后只需使用 min 来获取最小值。

使用您自己的代码:

list3=[]
for value1 in list1:
value1 = datetime.strptime(value1, '%Y-%m-%dT%H:%M:%S.000-0400')
aux_list = []
for value2 in list2:
value2 = datetime.strptime(value2, '%Y-%m-%dT%H:%M:%S.000-0400')
if value1 < value2:

value3 = value2 - value1
aux_list.append(value3)
list3.append(aux_list)

这样,您的 list3 保留了从 list1 的每个元素到 list2 的所有元素的差异

>>> print(list3)
[[datetime.timedelta(0, 2976), datetime.timedelta(3, 30187), datetime.timedelta(3, 30198), datetime.timedelta(6, 6277)],
[datetime.timedelta(3, 22987), datetime.timedelta(3, 22998), datetime.timedelta(5, 85477)]]

然后您可以使用 min(list[0]) 和第二个 min(list[1]) 获得与第一个项目的最小差异


注意,如果你有

l1 = [datetime.strptime(x, '%Y-%m-%dT%H:%M:%S.000-0400') for x in list1]
l2 = [datetime.strptime(x, '%Y-%m-%dT%H:%M:%S.000-0400') for x in list2]

你的整个代码可以使用列表理解写在一行中:

k = [min([v2 - v1 for v2 in l2 if v2>v1]) for v1 in l1]

成为 l1l2 您的 datetime 对象列表。这产生

0:49:36 # k[0]
3 days, 6:23:07 # k[1]

关于Python 两个列表在两个 For 循环中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50398933/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com