如何从python的嵌套列表中提取和比较元素?

时间:2018-10-03 11:57:08

标签: python

我只会发布列表的格式。 我正在尝试拆分此列表:

list1 = [["first","22","25","35"],["second","22","25","35"]]

进入

list2 = [[["first"],["22"],["25"],["35"]],[["second"],["22"],["25"],["35"]]]

所以我可以在list2 [x] [y]中进行迭代,或者有更好的主意,请比较list1之间的值

for x in list:
    list2.append(x.split(","))

但是它说列表没有split()方法。

同样,这是一个学习项目,因此它不需要给我直接的答案,我只是在寻找提示并帮助如何做。

2 个答案:

答案 0 :(得分:0)

您可以zip将两个子列表放在一起,然后从那里进行比较

l = [*zip(list1[0], list1[1])]

可以通过列表理解完成:

l = [(list1[0][idx], list1[1][idx]) for idx, item in enumerate(list1[1])]
[('first', 'second'), ('22', '22'), ('25', '25'), ('35', '35')]

从这里开始,您可以使用[i][0] and [i][1]

比较每个元组元素

答案 1 :(得分:0)

您也可以嵌套使用map来执行以下操作:

list1 = [["first","22","25","35"],["second","22","25","35"]]

list2 = list(map(lambda l: list(map(lambda e: [e], l)), list1))

print(list2)                 

# [[['first'], ['22'], ['25'], ['35']], [['second'], ['22'], ['25'], ['35']]]              

但是,如果您的目标是仅比较每个元素,则可以执行以下操作:

list1 = [["first","22","25","35"],["second","22","25","35"]]
for e in zip(*list1):    # will also work even if list1 has more than two lists
    print(len(set(e)) == 1)

# False
# True
# True
# True