如何在Python中填充数组的其余值?



我有一个完整的列表:f = [A,B,C,D,E].

和短列表:s = [A,B,D]

我想从完整列表中得到short list+all rest values的结果列表,短列表中没有。

结果应该是:

nlist = [A,B,D,C,E]

我试了两个循环:

let nlist = s
for f in full:
for s in short:
if s not in f:
nlist.append(f)

但我认为这是错误的方法

使用列表推导式:

lst = short_lst + [x for x in long_lst if x not in short_lst]

如果列表fs包含副本(如在您的示例中),也可以执行以下操作,

f = ["A", "B", "C", "D", "E"]
s = ["A", "B", "D"]
s.extend(set(f) ^ set(s))
print(s) # output: ['A', 'B', 'D', 'E', 'C']

,其中^算子是对称差分算子。如果你想知道差分和对称差分的区别,我建议你看看这个问题。然而,帖木儿的答案可能是你正在寻找的方法。

对于巨大的full_listsize试试:

full_list = ['A','B','C','D','E']
short_list = ['A','B','D']
for i,s in enumerate(short_list):
if s in full_list:
full_list[full_list.index(s)] = full_list[i]
full_list[i]=s
print(full_list)

结果

[A,B,D,C,E]

注意

  • 此方法比其他方法稍微快一些,因为您将full_list排序在原地.

  • 但与其他答案相比,它的可读性较差。

连接的方法的惟一值frommultiple lists不同大小:

x = ['I','G','F','A']
y = ['H','E','B','J','B']
z = ['D','C','A']
nlist = sorted(set(x+y+z))
nlist
#output
['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']

相关内容

  • 没有找到相关文章