这是我列表的一部分。我的原始清单有30多个项目:
index.html
我需要比较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]]]
中的所有项目。我的意思是,如果我的第一个项目的前9个项目等于其他项目的前9个项目,则a
比较最后一个项目的项目[1]。
我将item2称为"1, 2, 3, 4, 5, 6, 7, 8, 9"
列表中的其他项目
a
答案 0 :(得分:0)
这是(一种)功能方法(我还没有在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)
将返回一个空列表[]
,如果a
为空,或者a
的每个项目的第一个子项目都不匹配。
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)) # []
答案 1 :(得分:0)
请注意,a[9][1]
不是该元素中的第一项,它是第二项,第一项是a[9][0]
,因为列表从0开始。您的问题(除其他外)是数字您执行的迭代次数。考虑一下,如果n
是列表中元素的数量,并且对于任何给定元素x
,您都将其与列表中的每个元素进行比较,那么您应该遍历列表{{ 1}}次。而n^n
仅对列表for item in a: ...
进行迭代。
n
答案 2 :(得分:0)
解决方案
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 = []
for item in a:
for i in range(0, len(a)): #changed loop method
if item[0] == a[i][0]:
if item[1][1] <= a[i][1][1]: #changed to item[1] of last set
lista.append(item)
elif item[1][1] > a[i][1][1]:
lista.append(a[i])
print(lista)
输出
(xenial)vash@localhost:~/pcc/9$ python3 help.py
[[[1, 2, 3, 4, 5, 6, 7, 8, 9], [0.4, 3]], [[1, 2, 3, 4, 5, 6, 7, 8, 9], [1.8, 1]]]
(xenial)vash@localhost:~/pcc/9$
这很有趣,很有趣!
因此每个item
中都有一组item
,首先我们需要将item[0]
与所有item[0]
进行比较,但只能比较一次,因此我将item[0]
(1、2 ...)与使用item[0]
的所有a[i][0]
进行了比较。如果item[0] == a[i][0]
,那么我们可以比较下一组。 接下来,我们将接下来,我们将item[1][0]
与a[i][1][0]
(.04 v 1.8)进行比较。item[1][1]
与a[i][1][1]
(3 vs 1)进行比较。如果item
是<=
,我们可以append.item
,如果item
是>
,我们将附加比较集append(a[i])
。
已更新:注意,您想比较最后一组的item[1]
而不是最后一组的第一项。
还请考虑此解决方案将自身与v进行比较
要绕过此操作,您可以添加if item == a[i]: continue
投诉
我唯一的问题是您要完成的工作。比较 >
和<
时。当测试第一组时,.4会少一些,它将追加它的集合,但是当我们比较1.8而它越大时,您又将.4种集合追加了...
您可以修改并添加if item not in lista
和if a[i] not in lista
来检查是否要在lista
中添加您要添加的内容
if item[1][0] <= a[i][1][0]:
if item not in lista:
lista.append(item)
elif item[1][0] > a[i][1][0]:
if a[i] not in lista:
lista.append(a[i])
但是,即使您仍然总是 append
小item
,所以您最好只评估<=
并在lista
中进行检查您append
我错了,我忘了我们也要追加相等的内容,因此希望此解决方案是您所要的!