如何解决Python 将十六进制值从 0x00 转换为 0x0
我有 2 个十六进制数字列表,我需要检查一个列表中的每一项是否存在于第二个列表中,如果存在,则将其删除。问题在于,在第一个列表中,十六进制数字的格式为:0x00(如果它们
diff = second_hex_list
for item in first_hex_list:
if item in second_hex_list:
diff.remove(item)
解决方法
只需将它们转换为 int
即可进行比较。您有第二个错误,即您在进行更改之前没有复制列表(应该是 diff = second_hex_list[:]
)。但是列表推导式是一种更好的过滤方式。
second = set(int(item,16) for item in second_hex_list)
diff = [item for item in first_hex_list if int(item,16) not in second]
,
您可以在搜索之前转换项目以匹配第二个列表的格式:
diff = second_hex_list
for item in first_hex_list:
if item.replace("0x0","0x") in second_hex_list:
diff.remove(item)
这将涵盖您描述的特定问题,但可能不适用于实际数据中的所有情况(因此您需要提供有意义的输入和预期输出示例)。
请注意,如果您的列表非常大,您可能需要使用集合来有效地进行过滤:
first_hex_set = { item.replace("0x0","0x") for item in first_hex_list }
diff = [item for item in second_hex_list if item not in first_hex_set ]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。