如何找到数组之间的第一个匹配项并对其进行格式化

尼克D

我有基本清单

['hello', 'how', 'you', 'doing', 'today']

我想将其他列表与它进行比较。

如果像这样列出

['one', 'two', 'three', 'hello', 'how', 'you', 'doing', 'today']

算法应该返回

['hello', 'how', 'you', 'doing', 'today'] 

实际上只是在给定的列表中找到基本列表

也给出列表可以是这样的

['one', 'two', 'three', 'how', 'you', 'doing', 'today']

因此,正如我们在此示例中看到的,缺少单词hello,因此第一个匹配项位于基本列表的位置 1。在这种情况下,返回列表应该是这样的

['*', 'how', 'you', 'doing', 'today']

第一次匹配后会怎样并不重要

所以再次示例 1

basic = ['hello', 'how', 'you', 'doing', 'today']
given = ['one', 'two', 'three', 'hello', 'how', 'you', 'doing', 'today']
output = ['hello', 'how', 'you', 'doing', 'today']

示例 2

basic = ['hello', 'how', 'you', 'doing', 'today']
given = ['how', 'you', 'doing', 'man']
output = ['*', 'how', 'you', 'doing', 'man']

示例 3

basic = ['hello', 'how', 'you', 'doing', 'today']
given = ['one', 'two', 'you', 'doing', 'man', 'yeaaaap']
output = ['*', '*', 'you', 'doing', 'man', 'yeaaaap']

我的功能看起来像这样

def findFirstMatch(basic, given):
    for index, item in enumerate(basic):
        for i, el in enumerate(given):
            if basic[index].lower() == given[i].lower():
                return given[i:]

所以现在我在这里它只是在第一次匹配之前删除元素。如果第一次匹配在 1 个位置,它可以正常工作,但在示例 2 中它无法正常工作。

黑板

我无法理解这个问题:我假设您想要实现的是以下算法:

def match(basic, given):
    out = []

    # 1. go through list 'basic'
    # until you find the item in 'given'
    # append '*' to the output list for item you
    # do not find

    first_match = None
    for item in basic:
        if not item in given:
            out.append("*")
        else:
            first_match = item
            break
    if not first_match:
        return out

    # 2. now that we have found a match,
    # simply append the rest of 'given'

    index = given.index(first_match)
    out.extend(given[index:])

    return out

测试一下:

match(['hello', 'how', 'you', 'doing', 'today'], ['one', 'two', 'three', 'hello', 'how', 'you', 'doing', 'today'])

# ['hello', 'how', 'you', 'doing', 'today']

match(['hello', 'how', 'you', 'doing', 'today'], ['how', 'you', 'doing', 'man'])

# ['*', 'how', 'you', 'doing', 'man']

match(['hello', 'how', 'you', 'doing', 'today'], ['one', 'two', 'you', 'doing', 'man', 'yeaaaap'])

# ['*', '*', 'you', 'doing', 'man', 'yeaaaap']

重现您的示例。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何根据数组(和找到的节点)中的第一个匹配项查询第一个节点?

来自分类Dev

格式化数组中的第一个值

来自分类Dev

每当找到类中的第一个匹配项时,如何停止方法.contains()?

来自分类Dev

如何使此正则表达式仅找到第一个匹配项

来自分类Dev

如何找到数组中的第一个重复项?

来自分类Dev

扩展grep以在第一个匹配项之后找到匹配项

来自分类Dev

一行中的第一个逗号后,如何以csv格式格式化文件?

来自分类Dev

找到第一个单词和最后一个单词的匹配项

来自分类Dev

按数据框进行分组和排序,然后根据条件找到第一个匹配项

来自分类Dev

根据行的第一个单元格的值对excel行进行条件格式化

来自分类Dev

如何提取数组的第一个找到的元素?

来自分类Dev

对于数组中的每个重复项,找到第一个重复项的索引

来自分类Dev

D3.JS试图格式化轴的第一个刻度的文本

来自分类Dev

有条件地格式化列中值的第一个实例

来自分类Dev

如果第一个匹配项没有行,如何进行条件连接,请使用第二个匹配项

来自分类Dev

如何替换除第一个匹配项外的所有匹配字符

来自分类Dev

提取nan之后numpy数组中的第一个匹配项

来自分类Dev

javascript只删除循环中数组中的第一个匹配项

来自分类Dev

在第一个匹配项后循环遍历数组并执行其他操作?

来自分类Dev

按字段值返回第一个匹配项的数组

来自分类Dev

在第一个匹配项后循环遍历数组并执行其他操作?

来自分类Dev

在数组中找到第一个字符串匹配?

来自分类Dev

在Swift数组中找到第一个元素匹配条件(例如EKSource)

来自分类Dev

sed更改另一个匹配项的第一个匹配项

来自分类Dev

仅子查询第一个匹配项

来自分类Dev

仅删除sed的第一个匹配项

来自分类Dev

NSPredicate仅查找第一个匹配项

来自分类Dev

HtmlAgilityPack仅返回第一个匹配项

来自分类Dev

XSLT选择第一个匹配项

Related 相关文章

  1. 1

    如何根据数组(和找到的节点)中的第一个匹配项查询第一个节点?

  2. 2

    格式化数组中的第一个值

  3. 3

    每当找到类中的第一个匹配项时,如何停止方法.contains()?

  4. 4

    如何使此正则表达式仅找到第一个匹配项

  5. 5

    如何找到数组中的第一个重复项?

  6. 6

    扩展grep以在第一个匹配项之后找到匹配项

  7. 7

    一行中的第一个逗号后,如何以csv格式格式化文件?

  8. 8

    找到第一个单词和最后一个单词的匹配项

  9. 9

    按数据框进行分组和排序,然后根据条件找到第一个匹配项

  10. 10

    根据行的第一个单元格的值对excel行进行条件格式化

  11. 11

    如何提取数组的第一个找到的元素?

  12. 12

    对于数组中的每个重复项,找到第一个重复项的索引

  13. 13

    D3.JS试图格式化轴的第一个刻度的文本

  14. 14

    有条件地格式化列中值的第一个实例

  15. 15

    如果第一个匹配项没有行,如何进行条件连接,请使用第二个匹配项

  16. 16

    如何替换除第一个匹配项外的所有匹配字符

  17. 17

    提取nan之后numpy数组中的第一个匹配项

  18. 18

    javascript只删除循环中数组中的第一个匹配项

  19. 19

    在第一个匹配项后循环遍历数组并执行其他操作?

  20. 20

    按字段值返回第一个匹配项的数组

  21. 21

    在第一个匹配项后循环遍历数组并执行其他操作?

  22. 22

    在数组中找到第一个字符串匹配?

  23. 23

    在Swift数组中找到第一个元素匹配条件(例如EKSource)

  24. 24

    sed更改另一个匹配项的第一个匹配项

  25. 25

    仅子查询第一个匹配项

  26. 26

    仅删除sed的第一个匹配项

  27. 27

    NSPredicate仅查找第一个匹配项

  28. 28

    HtmlAgilityPack仅返回第一个匹配项

  29. 29

    XSLT选择第一个匹配项

热门标签

归档