Python 两个列表之间的重复/公共元素
对于熟悉Python中列表的人,我有一个愚蠢的问题。 我想得到两个列表中的常用项。假设我有这个列表:Python 两个列表之间的重复/公共元素,python,list,python-2.7,for-loop,Python,List,Python 2.7,For Loop,对于熟悉Python中列表的人,我有一个愚蠢的问题。 我想得到两个列表中的常用项。假设我有这个列表: dates_list = ['2016-07-08 02:00:02', '2016-07-08 02:00:17', '2016-07-08 02:00:03', '2016-07-08 02:00:20', '2016-07-08 02:01:08',
dates_list = ['2016-07-08 02:00:02',
'2016-07-08 02:00:17',
'2016-07-08 02:00:03',
'2016-07-08 02:00:20',
'2016-07-08 02:01:08',
'2016-07-08 02:00:09',
'2016-07-08 02:01:22',
'2016-07-08 02:01:33']
以及一个名为“time_by_seconds”的列表,其中包含一天中所有秒的列表:
time_by_seconds = [['2016-07-08 02:00:00',
'2016-07-08 02:00:01',
'2016-07-08 02:00:02',
'2016-07-08 02:00:03',
'2016-07-08 02:00:04',
'2016-07-08 02:00:05',
'2016-07-08 02:00:06',
etc ],
['2016-07-08 02:01:00',
'2016-07-08 02:01:01',
'2016-07-08 02:01:02',
'2016-07-08 02:01:03',
'2016-07-08 02:01:04',
etc ]]
这是我的代码,用于打印此列表中的项目:
for item in dates_list:
for one_list in time_by_seconds:
if item in one_list:
print item
结果是:
2016-07-08 02:00:02
2016-07-08 02:00:17
2016-07-08 02:00:03
2016-07-08 02:00:20
2016-07-08 02:01:08
2016-07-08 02:00:09
2016-07-08 02:01:22
2016-07-08 02:01:33
2016-07-08 02:17:42
2016-07-08 02:17:42
2016-07-08 02:17:42
2016-07-08 02:17:42
2016-07-08 02:05:35
2016-07-08 02:05:35
2016-07-08 02:03:22
2016-07-08 02:26:33
2016-07-08 02:26:33
2016-07-08 02:26:33
2016-07-08 02:26:33
2016-07-08 02:26:33
2016-07-08 02:26:33
2016-07-08 02:14:54
2016-07-08 02:14:54
2016-07-08 02:14:54
2016-07-08 02:05:13
2016-07-08 02:05:13
2016-07-08 02:15:30
2016-07-08 02:15:30
2016-07-08 02:15:30
2016-07-08 02:15:30
2016-07-08 02:01:53
2016-07-08 02:02:31
2016-07-08 02:00:08
2016-07-08 02:04:16
2016-07-08 02:08:44
2016-07-08 02:08:44
2016-07-08 02:11:17
2016-07-08 02:11:17
2016-07-08 02:11:17
2016-07-08 02:01:40
2016-07-08 02:04:23
2016-07-08 02:01:34
2016-07-08 02:24:31
2016-07-08 02:24:31
2016-07-08 02:24:31
2016-07-08 02:24:31
2016-07-08 02:24:31
2016-07-08 02:00:27
2016-07-08 02:14:35
2016-07-08 02:14:35
2016-07-08 02:14:35
2016-07-08 02:00:57
2016-07-08 02:02:24
2016-07-08 02:02:46
2016-07-08 02:05:04
2016-07-08 02:05:04
2016-07-08 02:11:26
2016-07-08 02:11:26
2016-07-08 02:11:26
2016-07-08 02:06:24
2016-07-08 02:06:24
etc
但如果我使用另一个列表,长度为49,我有重复的。具体地说,我必须有49个元素作为结果,因为所有这些日期都存在于我的时间里。
名单如下:
beginning_time_list = ['2016-07-08 02:17:42',
'2016-07-08 02:05:35',
'2016-07-08 02:03:22',
'2016-07-08 02:26:33',
'2016-07-08 02:14:54',
'2016-07-08 02:05:13',
'2016-07-08 02:15:30',
'2016-07-08 02:01:53',
'2016-07-08 02:02:31',
'2016-07-08 02:00:08',
'2016-07-08 02:04:16',
'2016-07-08 02:08:44',
'2016-07-08 02:11:17',
'2016-07-08 02:01:40',
'2016-07-08 02:04:23',
'2016-07-08 02:01:34',
'2016-07-08 02:24:31',
'2016-07-08 02:00:27',
'2016-07-08 02:14:35',
'2016-07-08 02:00:57',
'2016-07-08 02:02:24',
'2016-07-08 02:02:46',
'2016-07-08 02:05:04',
'2016-07-08 02:11:26',
'2016-07-08 02:06:24',
'2016-07-08 02:04:32',
'2016-07-08 02:08:50',
'2016-07-08 02:08:27',
'2016-07-08 02:02:30',
'2016-07-08 02:03:59',
'2016-07-08 02:01:19',
'2016-07-08 02:02:09',
'2016-07-08 02:05:47',
'2016-07-08 02:02:36',
'2016-07-08 02:01:02',
'2016-07-08 02:02:58',
'2016-07-08 02:06:19',
'2016-07-08 02:02:34',
'2016-07-08 02:00:17',
'2016-07-08 02:10:03',
'2016-07-08 02:08:20',
'2016-07-08 02:02:36',
'2016-07-08 02:17:25',
'2016-07-08 02:07:19',
'2016-07-08 02:13:07',
'2016-07-08 02:03:51',
'2016-07-08 02:03:35',
'2016-07-08 02:14:53',
'2016-07-08 02:18:36']
相同的代码:
for item in beginning_time_list:
for one_list in time_by_seconds:
if item in one_list:
print item
这就是结果:
2016-07-08 02:00:02
2016-07-08 02:00:17
2016-07-08 02:00:03
2016-07-08 02:00:20
2016-07-08 02:01:08
2016-07-08 02:00:09
2016-07-08 02:01:22
2016-07-08 02:01:33
2016-07-08 02:17:42
2016-07-08 02:17:42
2016-07-08 02:17:42
2016-07-08 02:17:42
2016-07-08 02:05:35
2016-07-08 02:05:35
2016-07-08 02:03:22
2016-07-08 02:26:33
2016-07-08 02:26:33
2016-07-08 02:26:33
2016-07-08 02:26:33
2016-07-08 02:26:33
2016-07-08 02:26:33
2016-07-08 02:14:54
2016-07-08 02:14:54
2016-07-08 02:14:54
2016-07-08 02:05:13
2016-07-08 02:05:13
2016-07-08 02:15:30
2016-07-08 02:15:30
2016-07-08 02:15:30
2016-07-08 02:15:30
2016-07-08 02:01:53
2016-07-08 02:02:31
2016-07-08 02:00:08
2016-07-08 02:04:16
2016-07-08 02:08:44
2016-07-08 02:08:44
2016-07-08 02:11:17
2016-07-08 02:11:17
2016-07-08 02:11:17
2016-07-08 02:01:40
2016-07-08 02:04:23
2016-07-08 02:01:34
2016-07-08 02:24:31
2016-07-08 02:24:31
2016-07-08 02:24:31
2016-07-08 02:24:31
2016-07-08 02:24:31
2016-07-08 02:00:27
2016-07-08 02:14:35
2016-07-08 02:14:35
2016-07-08 02:14:35
2016-07-08 02:00:57
2016-07-08 02:02:24
2016-07-08 02:02:46
2016-07-08 02:05:04
2016-07-08 02:05:04
2016-07-08 02:11:26
2016-07-08 02:11:26
2016-07-08 02:11:26
2016-07-08 02:06:24
2016-07-08 02:06:24
etc
抱歉,共有95项
有人知道我为什么有复制品吗?
Thnx一旦在其中一个子列表中找到该项,搜索将与其他子列表一起继续
您应该考虑使用<代码> Buffe<代码>,一旦在子列表中找到一个当前日期项,就停止搜索:
for item in beginning_time_list:
for one_list in time_by_seconds:
if item in one_list:
print item
break
在其中一个子列表中找到该项后,搜索将与其他子列表一起继续
您应该考虑使用<代码> Buffe<代码>,一旦在子列表中找到一个当前日期项,就停止搜索:
for item in beginning_time_list:
for one_list in time_by_seconds:
if item in one_list:
print item
break
为了在两个列表中查找公共元素,您可以使用
set()
作为:
>>> a = [1, 2, 3, 4]
>>> b = [3, 4, 5, 6]
>>> list(set(a).intersection(set(b)))
[3, 4]
在您的情况下,b
是列表列表。你需要先把列表展平。为此,可以使用itertools.chain()
为了在两个列表中查找公共元素,您可以使用
set()
作为:
>>> a = [1, 2, 3, 4]
>>> b = [3, 4, 5, 6]
>>> list(set(a).intersection(set(b)))
[3, 4]
在您的情况下,b
是列表列表。你需要先把列表展平。为此,可以使用itertools.chain()
好吧,但是把一天中所有的时间都存储在一个列表中似乎不是一个好主意。当然还有更好的办法。你到底想达到什么目的?我的猜测是,你在
时间中以秒为单位有重复项,即2016-07-08 02:17:42
在多个列表中(我假设不应该发生),好吧,但将一天中的所有秒存储在一个列表中似乎不是一个好主意。当然还有更好的办法。你到底想实现什么?我的猜测是,你在时间内以秒为单位有重复项,即2016-07-08 02:17:42
在多个列表中(我假设不应该发生)更新了列表列表的答案,也更新了列表的答案