繁体   English   中英

在 Python 中创建一个 function 生成一个 2 列数组,计算列表的每个元素中出现的 substring 和每个元素的长度?

[英]Create a function in Python that generates a 2-column array counting the substring occurence in each element of a list and the length of each element?

有两个列表,string 和 query,都包含字符串。 我想创建一个 function 返回一个二维数组显示:

  • 每个元素在字符串列表中的查询列表中出现的次数为 substring,以及
  • 查询列表中每个元素的长度。

例如,如果我们有

  • 字符串 = ['om', 'om', 'omg']
  • query = ['om', 'omg', 'mg']

作为:

  • 'om'在字符串中出现三次,长度为2,得到[3, 2]
  • 'omg' 在字符串中出现一次,长度为 3,我们得到 [1, 3]
  • 'mg'在字符串中出现一次,长度为2,得到[1, 2]

所以 function 应该返回数组 [[3, 2], [1, 3], [1, 2]]

我尝试了以下方法:

def countstuff(string, query)
 result = []
 for i in query:
  array = [[sum(i in j for j in string], len(i)]]
  result.append(array)
 return result

但在我开始尝试 function 之前,它返回 SyntaxError: invalid syntax。

脑子不好使,求大神指点,谢谢。

def countstuff(string, query):
    result = []
    
    for i in query:
        ocr=0
        for j in string:
            ocr+=j.count(i)
        lst=[ocr,len(i)]
        result.append(lst)
    return result        
        

string = ['om', 'om', 'omg']
query = ['om', 'omg', 'mg']
print(countstuff(string,query))

玩得开心:)

简单的方法来做到这一点:

string = ['om', 'om', 'omg']
query = ['om', 'omg', 'mg']

def countstuff(strings, queries):
    result=[]
    string = " ".join(strings)

    for query in queries:
        count= string.count(query)
        length = len(query)
        result.append([count,length])

    return result
        
print(countstuff(string,query))

Output:

[[3, 2], [1, 3], [1, 2]]

嗨,经过更多的摆弄,我找到了另一个解决方案,谢谢大家。

def countstuff(string, query):
    result = []
    for i in query:
        array = [sum(i in j for j in string)]
        array.append(len(i))
        result.append(array)
    return result

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM