我有两个嵌套列表如下:
list_x = [[21, 58, 68, 220, 266, 386, 408, 505, 518, 579],
[283, 286, 291, 321, 323, 372, 378, 484, 586, 629]]
list_y = [[21, 220, 386, 505, 518], [286, 291, 321, 323, 372]]
我想比较上面嵌套列表中相同索引位置的元素,含义list_x[0]
应该list_y[0]
与等等进行比较。
我想生成第三个(嵌套)列表,以便对于 中的每个数字list_x[0]
,如果该数字也在 中list_y[0]
,则生成一个,如果不匹配,则生成一个零。应该对list_x[1]
和执行相同的过程list_y[1]
。
我的嵌套输出列表中的每个子列表的长度应该是 10(即较长的子列表的长度,匹配时为 1,不匹配时为 0)。所有子列表按升序排列。
一些值得分享的额外信息是和分别是list_y[0]
和list_y[1]
的子集。list_x[0]
list_x[1]
因此,我正在寻找的输出列表应如下所示:
out = [[1,0,0,1,0,1,0,1,1,0], [0,1,1,1,1,1,0,0,0,0]]
我尝试了以下代码,但我得到了 10 个额外的零
list_x = [y for x in list_x for y in x] #to flatten list_x
result = []
for y in list_y:
sublist = []
for x in list_x:
if x in y:
sublist.append(1)
else:
sublist.append(0)
result.append(sublist)
上面的代码给了我以下内容:
result = [[1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0]]
如果你能帮忙,谢谢!
托马斯,欢迎来到 SO!
试试这个:
#!/usr/bin/env python2
list_x = [[21, 58, 68, 220, 266, 386, 408, 505, 518, 579],
[283, 286, 291, 321, 323, 372, 378, 484, 586, 629]]
list_y = [[21, 220, 386, 505, 518], [286, 291, 321, 323, 372]]
answer=[]
for ( index, inner_list ) in enumerate( list_x ):
answer.append([])
for ( inner_index, inner_value ) in enumerate(inner_list):
answer[index].append(0)
if inner_value in list_y[ index ]:
answer[index][inner_index] = 1
print answer
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句