您可以使用itertools.groupby()
:
>>> from itertools import groupby
>>> l = [(1, 2, 'R'), (1, 3, 'S'), (1, 2, 'S'), (2, 3, 'S')]
>>> g_list=[list(g) for k, g in groupby(sorted(l),lambda x :x[0:2])]
>>> [(i[0],j[0],k) for i,j,k in [zip(*i) for i in g_list]]
[(1, 2, ('R', 'S')), (1, 3, ('S',)), (2, 3, ('S',))]
在这个片段中,我们首先需要与sorted()
功能排序,我们的列表之类我们基于这些元素tuplse,所以我们有这样的结果:
>>> sorted(l)
[(1, 2, 'R'), (1, 2, 'S'), (1, 3, 'S'), (2, 3, 'S')]
那么我们分组基于第一牵引元素的排序列表(lambda x :x[0:2]
),所以我们将有:
>>> g_list
[[(1, 2, 'R'), (1, 2, 'S')], [(1, 3, 'S')], [(2, 3, 'S')]]
所以,现在我们有相同的2第一个元素嵌套列表,现在我们需要保持刚刚1和第二路元素之一,两个(或更多)3TH元素,在这种情况下,我们可以使用zip()
函数,它会得到这样的结果:
>>> [zip(*i) for i in g_list]
[[(1, 1), (2, 2), ('R', 'S')], [(1,), (3,), ('S',)], [(2,), (3,), ('S',)]]
现在我们需要的是选择第一和第二元组和全3TH elemnt的第0个元素:
(i[0],j[0],k) for i,j,k in ...
for mem误码率在myList中: 出= []在范围(0,LEN(myList中)) 对于i: 在范围Ĵ(0,LEN(myList中)): 如果(构件[0] .myList [I ]成员[0] .myList [j])和(member [1] .myList [i] == member [1] .mylist [j]): newlist = [(member [0],member [1 ],(member [2] .myList [i],member [2] .myList [j]))] out.append [newlist] else: out。追加(成员) print(out) #我是非常基本的蟒蛇,probaly我有这个代码很多问题。我会感谢您的帮助 – Mahesh 2014-11-23 20:15:40