在列表中搜索最简单的方法是什么?

2024-09-28 22:20:10 发布

您现在位置:Python中文网/ 问答频道 /正文

它实际上是一个字符串,但我只是把它转换成一个列表,因为答案应该作为列表返回。我已经研究这个问题好几个小时了,但还是弄不懂。我应该以一个字符串为例,比如“Mary had a little lamb”,再以另一个字符串为例,比如“ab”,搜索string1,看看是否出现了string2中的任何字母。因此,如果对这两个例子做得正确,它将返回 [“a=4”,“b=1”]

到目前为止我有:

def problem3(myString, charString):
    myList = list(myString)
    charList = list(charString)
    count = 0
    newList = []
    newString = ""
    for i in range(0,len(myList)):
        for j in range(0,len(charList)):
            if charList[j] == myList[i]:
                count = count + 1
                newString = charList[j] + "=" + str(count)
    newList.append(newString)
    return newList

它返回[a=5]我知道它和新建列表.append(字符串)以及它应该放在哪里,有人有什么建议吗?你知道吗


Tags: 字符串in列表forlencountrangelist
3条回答

这里有一个可能的解决方案,使用编码器提到的计数器

from collections import Counter
s = "Mary had a little lambzzz"

cntr = Counter(s)
test_str = "abxyzzz"

results = []
for letter in test_str:
    if letter in s:
        occurrances = letter + "=" + str(cntr.get(letter))
    else:
        occurrances = letter + "=" + "0"

    if occurrances not in results:
        results.append(occurrances)


print(results)

输出

['a=4', 'b=1', 'x=0', 'y=1', 'z=3']
import collections

def count_chars(s, chars):
    counter = collections.Counter(s)
    return ['{}={}'.format(char, counter[char]) for char in set(chars)]

仅此而已。让Counter实际计算字符串中的字符。然后使用chars中的字符创建格式字符串的列表。(chars应该是一个集合,而不是一个列表,这样,如果chars中有重复的字符,输出将只显示一个。)

使用列表理解和count函数可以很容易地实现这一点,该函数可以处理字符串(和列表!)拥有:

  1. 将搜索字符串拆分为字符列表。你知道吗
  2. 对于搜索字符串中的每个字符,循环输入字符串并确定它出现的次数(通过count)。你知道吗

示例:

string = 'Mary had a little lamb'
search_string = 'ab'
search_string_chars = [char for char in search_string]
result = []
for char in search_string_chars:
    result.append('%s=%d' % (char, string.count(char)))

结果:

['a=4', 'b=1']

请注意,您不需要将search_string('ab')拆分为字符列表,因为字符串已经是字符列表了—上面这样做是为了说明这个概念。因此,上述的简化版本可以是(这也会产生相同的结果):

string = 'Mary had a little lamb'
search_string = 'ab'
result = []
for char in search_string:
    result.append('%s=%d' % (char, string.count(char)))

相关问题 更多 >