python - 用python连接两个列表列表
问题描述
我有两个列表列表
a = [[1,2],[5,3],[7,9]]
b = [[2,4], [6,7]]
我想将列表连接到
[[1,2,4],[5,3],[6,7,9]]
目标是如果列表中有相同的元素,它们将被连接起来。非常感谢任何帮助。
解决方案
这应该适用于更一般的情况:
def connected_components(list_of_lists):
""" based on Howard's answer https://stackoverflow.com/a/4842897/10693596 """
temp_list_copy = list_of_lists.copy()
result = []
while len(temp_list_copy)>0:
first, *rest = temp_list_copy
first = set(first)
lf = -1
while len(first)>lf:
lf = len(first)
rest2 = []
for r in rest:
if len(first.intersection(set(r)))>0:
first |= set(r)
else:
rest2.append(r)
rest = rest2
result.append(list(first))
temp_list_copy = rest
return result
a = [[1,2],[5,3],[7,9]]
b = [[2,4], [6,7]]
a = connected_components(a)
b = connected_components(b)
for n, i in enumerate(a):
combined_list = a[n]+ [jj for j in b if set(j).intersection(set(i)) for jj in j]
a[n] = sorted(list(set(combined_list)))
print(a)
或者也许下面是一个更 Pythonic 的版本:
result = [
sorted(
set([
k
for j in b
for k in (set(i)|set(j) if set(i)&set(j) else set(i))
])
)
for i in a
]
print(result)
推荐阅读
- javascript - 如何在浏览器中显示PPT?
- android-studio - 如何解决“无法解析 com.shawnlin:number-picker:2.4.8。” Android Studio 中的错误
- matlab - 请指导我拆分图像
- javascript - 如何优化 canActive 角度的代码
- java - 尝试读取资源文件时 InputStream 为空
- anylogic - 如何从 AnyLogic 获得最终图表?
- react-native - 如何在 React Native 中为 Android 设置组件 RTL
- xml - 使用 ,(逗号)和使用 | 有什么区别?(管道)在'除了'xslt?
- javascript - 从对象如何检索特定的键和值,仅在 Javascript 中
- razor - 使用 jquery ajax 不显眼地将 asp-route-data 传递给页面处理程序