我是一名有用的助手,可以为您翻译文本。
我有一个列表,其中包含多个列表,我正在尝试根据它们的项目对它们进行分组或聚类。如果前一组中没有任何元素,则嵌套列表将开始一个新组。 输入:
我的失败代码:
预期输出:
另一个例子:
预期的输出组:
我有一个列表,其中包含多个列表,我正在尝试根据它们的项目对它们进行分组或聚类。如果前一组中没有任何元素,则嵌套列表将开始一个新组。 输入:
paths = [
['D', 'B', 'A', 'H'],
['D', 'B', 'A', 'C'],
['H', 'A', 'C'],
['E', 'G', 'I'],
['F', 'G', 'I']]
我的失败代码:
paths = [
['D', 'B', 'A', 'H'],
['D', 'B', 'A', 'C'],
['H', 'A', 'C'],
['E', 'G', 'I'],
['F', 'G', 'I']
]
groups = []
paths_clone = paths
for path in paths:
for node in path:
for path_clone in paths_clone:
if node in path_clone:
if not path == path_clone:
groups.append([path, path_clone])
else:
groups.append(path)
print groups
预期输出:
[
[
['D', 'B', 'A', 'H'],
['D', 'B', 'A', 'C'],
['H', 'A', 'C']
],
[
['E', 'G', 'I'],
['F', 'G', 'I']
]
]
另一个例子:
paths = [['shifter', 'barrel', 'barrel shifter'],
['ARM', 'barrel', 'barrel shifter'],
['IP power', 'IP', 'power'],
['ARM', 'barrel', 'shifter']]
预期的输出组:
output = [
[['shifter', 'barrel', 'barrel shifter'],
['ARM', 'barrel', 'barrel shifter'],
['ARM', 'barrel', 'shifter']],
[['IP power', 'IP', 'power']],
]
paths_clone
是对同一列表的引用,而不是副本。使用paths[:]
来创建一个副本。 - Martijn Pieters