拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 Python根据另一个串列重新排列串列

Python根据另一个串列重新排列串列

白鹭 - 2022-02-14 1986 0 0

我想根据另一个串列重新排列一个串列,这些串列之间有共同的元素。

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 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *