我要列出一些常见的元素:
p = [('link1/d/b/c', 'target1/d/b/c'), ('link2/a/g/c', 'target2/a/g/c'), ..., ('linkn/b/b/f', 'targetn/b/b/f')]
q = [['target1/d/b/c', 'target1', 123, 334], ['targetn/b/b/f', 'targetn', 23, 64], ... ,['targetx/f/f/f', 'targetx', 999, 888]]
我试着比较它们,找出共同点,然后用结果做一些工作:
^{pr2}$目前,我使用的是简单且非常缓慢的alghortim:
for item in p:
link = item[0]
target = item[1]
for item2 in q:
target2 = item2[0]
if target2 == target:
do_some_job(...)
我认为,我需要比较这两个列表,然后创建一个包含所有元素的列表,例如:
pq = [['target1/d/b/c', 'target1', 123, 334, 'link1/d/b/c'], ..., ['targetn/b/b/f', 'targetn', 23, 64, 'linkn/b/b/f']]
然后调用do_some_job(pq)
,而不是每次找到同一个元素时都调用它
如何获得?在
谨致问候
使用}获取公共元素。在
chain()
将这两个列表展平,然后使用set()
和{或者使用列表理解和短路:
^{pr2}$或使用
any()
:计时:
使用
chain
进行列表理解应该有效:你应该使用字典:
target_to_link
字典提供来自目标的相应链接。只要确保你没有几个目标共享同一个链接。。。在在
for
循环中,我们只需创建一个临时的参数列表args
,它将你的item
(例如,['target1/d/b/c', 'target1', 123, 334]
)与相应的链接相结合,我们使用function(*args)
语法。。。在如果需要在
^{pr2}$p
上循环,可以构造一个类似于然后做一些类似的事情
相关问题 更多 >
编程相关推荐