You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python列表字符串与二维矩阵子串匹配问题的求解求助

代码修改方案

你原来的核心逻辑错误是判断方向搞反了,你已经完成了「删除l3中所有字符串的空格」这一步,接下来只需要判断去空格后的字符串是否包含l1中任意一个元素作为子串即可,不需要多余的split操作。

修改后的完整代码

l1 = ['phone','bag','name','after']
l2 = [
    ['phoneedjf','jshph o n ejsh','pho ne'],
    ['ffaf terekdl','a hf ter','fd af t e rls'],
    ['name s', 'ram es','her na me is'],
    ['ba gg in g','ba g pa ck','b a g'],
    ['bo ok s','sksjbooksjfl','b o o k kfs ifh']
]

import numpy.core.defchararray as np_f
# 去掉所有字符串中的空格
new_data = np_f.replace(l2, ' ', '')
# 逐行逐元素判断是否包含l1中的任意子串
output = []
for row in new_data:
    new_row = [any(key in element for key in l1) for element in row]
    output.append(new_row)

# 打印结果
for line in output:
    print(line)

运行输出

[True, True, True]
[True, False, True]
[True, False, True]
[True, True, True]
[False, False, False]

完全符合你的预期输出要求。

原代码错误说明

  • 原代码中判断逻辑错误:你写的any(value in l1 and ' ' not in element for value in element.split())是在判断当前字符串拆分后的片段是否存在于l1中,而不是判断l1的元素是否是当前字符串的子串
  • 你已经提前把所有空格都删除了,后续不需要再做split、也不需要判断空格是否存在,属于冗余操作
  • 第二段错误代码的问题是你遍历的对象搞反了,把列表l3当成字符串调用了split方法,才会抛出属性错误。

内容的提问来源于stack exchange,提问作者Soheila

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 18:57:01