微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用列表理解技术获得所需的结果列表?

如何解决如何使用列表理解技术获得所需的结果列表?

我有一个列表:

list_1 = ['id','name','organization','notes','key_length','digest','validity_start','validity_end','country_code','state','city','organization_name','organizational_unit_name','email','common_name','extensions','serial_number','passphrase','created','modified']

现在,我正在尝试编写一个列表推导式以获得以下列表作为最终结果:

list_2 = ['id','certificate','private_key','modified']

这是我在做什么:

list_2 = [
            field
            for field in list_1
            if field not in {'extensions','passphrase'}
        ]

使用上述 LOC,我可以获得所需的列表,除了 certificateprivate_key 两个字段。 为此,我目前正在使用 insert 方法,但我希望这在列表理解本身中完成。

解决方法

如果列表中的位置无关紧要:

ALTER DEFAULT PRIVILEGES FOR ROLE fdovy1a969c6
   GRANT EXECUTE ON FUNCTION TO PUBLIC,fdovy1a969c6;

如果是,您可以指定您想要的位置,如下所示

[field for 
field in list_1+["certificate","private_key"] 
...

第一个示例将 list_1 与包含“certificate”和“private_key”的列表连接起来,第二个示例将 list_1 的拼接与相同的列表和 list_1 的其余部分连接起来。

[field for 
field in list_1[0:17]+['certificate','private_key']+list_1[18::]
...
,

如果你想替换一个项目,请使用映射字典。

map_dict = {'extensions': 'certificate','passphrase': 'private_key'}
list_2 = 
    map_dict[field] if field in {'extensions','passphrase'}
    else field
    for field in list_1
]
,

作为对你想做列表理解的框架挑战,我发现,至少在你举的例子中,列表理解是最慢的,LCVcode建议的list_2 = list(set(list_1) - {'extensions','passphrase'})更快,并且

list1a.remove('extensions')
list1a.remove('passphrase')

是最快的。但是,如果您尝试删除的元素不存在,则最后一个方法将引发错误。

要添加元素,您可以执行list_2 = list(set(list_1) - {'extensions','passphrase'})+['certificate','private_key']

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?