为了账号安全,请及时绑定邮箱和手机立即绑定

与不关心(忽略)字符的字符串比较

与不关心(忽略)字符的字符串比较

米琪卡哇伊 2021-12-29 10:20:23
我有两个列表,一个golden字符串列表和一个measured字符串列表。我必须逐个元素比较这些列表。字符串具有完全相同的长度。金色串中有标有 的字符,'X'在比较中不考虑。例如:Golden = [    '023XX1FD', 'FEBFF1B6', 'XXXXXXXX', '????????', '00000XXX',     '00000000', '00000000', '00000000', '00000800']Measured = [    '0236C1FD', 'FEBFF1B6', '00F1FC3F', '????????', '00000000',     '00000000', '00000000', '00000000', '00000800']和'023XX1FD'with 的比较'0236C1FD'应该返回真,因为我们应该只比较'X'金线中不等于的部分。对于此示例,输出True针对每个字符串。
查看完整描述

3 回答

?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

可以定义自己的字符串比较函数,将字符一一遍历并进行比较,只要金色字符不是“Don't Care”值即可:


def myStringCompare(golden, measured, dont_care="X"):

    return (

        (len(golden) == len(measured)) and 

        all(g == m for g, m in zip(golden, measured) if g != dont_care)

    )

然后在列表理解中使用这个函数:


print([myStringCompare(a, b) for a, b in zip(Golden, Measured)])

#[True, True, True, True, True, True, True, True, True]


查看完整回答
反对 回复 2021-12-29
?
aluckdog

TA贡献1847条经验 获得超7个赞

您可以使用

[all(char1 == 'X' or char1 == char2 for char1, char2 in zip(str1, str2)) for str1, str2 in zip(list1, list2)]



查看完整回答
反对 回复 2021-12-29
?
catspeake

TA贡献1111条经验 获得超0个赞

我已经能够提出以下列表理解:


result_list = [

    all(

        [

            symbol == b[list_index][symbol_index]

            for symbol_index, symbol in enumerate(item)

            if symbol != "X"

        ]

    )

    for list_index, item in enumerate(a)

]



> [True, True, True, True, True, True, True, True, True]


查看完整回答
反对 回复 2021-12-29
  • 3 回答
  • 0 关注
  • 147 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信