我想根據另一個串列重新排列一個串列,這些串列之間有共同的元素。
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()
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/396508.html
下一篇:將字典展平并將其轉換為串列
