如何解决如何使用列表理解技术获得所需的结果列表?
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,我可以获得所需的列表,除了 certificate
和 private_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 举报,一经查实,本站将立刻删除。