【问题标题】:Check if any element of a list is in a matrix?检查列表的任何元素是否在矩阵中?
【发布时间】:2021-10-30 20:28:45
【问题描述】:

我有一个小清单:

list2 = ['hi', 'ma', 'ja']

我也有一个矩阵。例如:

matrix2 = ([['high','h ight','hi ght','h i g ht'],
       ['man','ma n','ma th','mat h'],
       ['ja cket','j a ck et','jack et','ja m']
       ['ma nkind','jack',' hi ','hi'])

并且我需要确定这个数组的 list2 的任何元素是否不在 matrix2 中。 我尝试使用 np.isin() :

np.isin(matrix2,list2) 

但此代码仅显示矩阵中是否存在元素。但我需要这个输出:

output = ([[False, False, True, False],
       [False, True, True, False],
       [True, False, False, True]
       [True, False, True, False])])

正如您在输出中看到的,空格也很重要。例如,'hi' 前后没有空格,这不是我想要的。我需要通过考虑字符集之间的空格来获得列表。

谁能帮我解决这个问题?

【问题讨论】:

  • 你的逻辑是什么output[0][4] = [True, False, True, False]
  • @user1740577 似乎是一个错误。应该是[True, False, True, True]
  • 空格。 'hi' 前后没有空格不是我想要的。我需要通过考虑字符集之间的空格来获得列表。 @user1740577
  • @exocytosis 然后您可能想将此限制添加到问题中。定义list2 = ['hi ',' hi', 'ma', 'ja'] 还不够吗
  • 你是对的。我现在就去做。 @Matthias

标签: python python-3.x list numpy matrix


【解决方案1】:

您必须遍历矩阵,然后遍历矩阵的每一行。然后你有一个字符串,你必须拆分它以获得各个部分。现在您可以检查这些部分是否在list2 中。

list2 = ['hi', 'ma', 'ja']

matrix2 = [['high','h ight','hi ght','h i g ht'],
            ['man','ma n','ma th','mat h'],
            ['ja cket','j a ck et','jack et','ja m'],
            ['ma nkind','jack',' hi ','hi']]

output = []
for row in matrix2:
    new_row = [any(value in list2 for value in element.split()) for element in row]
    output.append(new_row)
print(output)

结果是

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

将现有空间的附加限制考虑在内的小改动。

output = []
for row in matrix2:
    new_row = [any(value in list2 and ' ' in element for value in element.split()) for element in row]
    output.append(new_row)
print(output)

这会给你

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

【讨论】:

  • 感谢您的回答,但很遗憾我无法运行此代码。
  • 您能解释一下“我无法运行此代码”是什么意思吗?在我回答后,您是否收到错误或参考您在 cmets 中提供的附加约束?
  • 我想删除我的评论。我的编译器有问题,所以我有一个错误。刷新编译器后,它工作了。谢谢。
  • 好的。在这种情况下,我有一个替代版本给你。您可能想尝试一下。
猜你喜欢
  • 2014-05-09
  • 2019-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-09
  • 2022-12-01
  • 1970-01-01
  • 2016-09-06
相关资源
最近更新 更多