我想根据另一个串列重新排列一个串列,这些串列之间有共同的元素。
my list = ['q','s','b','f','l','c','x','a']
base_list = ['z','a','b','c']
以上串列具有共同的“a”、“b”和“c”作为共同元素。预期结果如下
my_result = ['a','b','c','q','s','f','l','x']
在此先感谢天空
uj5u.com热心网友回复:
my_list = ['q','s','b','f','l','c','x','a']
base_list = ['z','a','b','c']
res1=[x for x in base_list if x in my_list] # common elements
res2=[x for x in my_list if x not in res1] #
res3=res1 res2
输出 :
['a', 'b', 'c', 'q', 's', 'f', 'l', 'x']
uj5u.com热心网友回复:
创建一个自定义密钥,sorted
如本档案中所示。为没有出现在 中的字母设定任意高的值,base_list
以便它们最终出现在后面。由于sorted
被认为是稳定的,那些不在的base_list
将保持原先的顺序不变。
l = ['q','s','b','f','l','c','x','a']
base_list = ['z','a','b','c']
def custom_key(letter):
try:
return base_list.index(letter)
except ValueError:
return 1_000
sorted(l, key=custom_key)
['a', 'b', 'c', 'q', 's', 'f', 'l', 'x']
uj5u.com热心网友回复:
一种(可能不是最佳的)方式:
>>> sorted(my_list, key=lambda x: base_list.index(x) if x in base_list
else len(base_list) 1)
['a', 'b', 'c', 'q', 's', 'f', 'l', 'x']
uj5u.com热心网友回复:
combined_list = []
for element in my_list:
If combined_list.contains(element) == false
Combined_list.append(element)
for element in old_list:
If combined_list.contains(element) == false
Combined_list.append(element)
Combined_list.sort()
0 评论