首页 > 解决方案 > 比较列表Python列表的所有元素

问题描述

这是我的清单的一部分。我的原始清单有 30 多个项目:

a = [[[1, 2, 3, 4, 5, 6, 7, 8, 9], [0.4, 3]], [[1, 2, 3, 4, 5, 6, 7, 8, 9], [1.8, 1]]]

我需要比较我的所有项目a。我的意思是,如果我的第一项的前 9 项等于另一项的前 9 项,则"1, 2, 3, 4, 5, 6, 7, 8, 9"比较最后一项的 item[1]。

我将 item2 称为a列表的其他项目

lista = []
for item in a:
    print item
    >>> [[1, 2, 3, 4, 5, 6, 7, 8, 9], [0.4, 3]]
    >>> [[1, 2, 3, 4, 5, 6, 7, 8, 9], [1.8, 1]]
    if item[:1] == item2[:1]:
        if item[9][1] <= item2[9][1]:
            lista.append(item)
        if item[9][1] > item2[9][1]:
            lista.append(item2)


print lista
>>> [[1, 2, 3, 4, 5, 6, 7, 8, 9, [1.8, 1]]

标签: pythonlist

解决方案


Here is a (kind-of) functional approach (I haven't tried this on Python 2.x):

from operator import itemgetter

def get_lista(a):
     if a and len(set(map(' '.join, map(str, map(itemgetter(0), a))))) == 1:
          return [a[0][0]] + [min(map(itemgetter(1), a), key=itemgetter(1))]
     return []

a = [[[1, 2, 3, 4, 5, 6, 7, 8, 9], [0.4, 3]], [[1, 2, 3, 4, 5, 6, 7, 8, 9], [1.8, 1]]]
lista = get_lista(a)
print(lista) # [[1, 2, 3, 4, 5, 6, 7, 8, 9], [1.8, 1]]

get_lista(a) will return an empty list, [], if a is empty or if the first sub-item of each of the items of a do not match.

a = [[[1, 2, 3, 4, 5, 6, 7, 8, 9], [0.4, 3]], [[2, 3, 4, 5, 6, 7, 8, 9, 10], [1.8, 1]]]
print(get_lista(a)) # []

推荐阅读