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

时间:2016-11-12 00:06:45

标签: python string list iteration

它实际上是一个字符串,但我只是将其转换为列表,因为答案应该作为列表返回。我一直在看这个问题几个小时,但是无法得到它。我应该采取一个字符串,例如“玛丽有一只小羊羔”和另一个字符串,例如“ab”,并搜索string1,看看是否有来自string2的任何字母。因此,如果使用这两个示例正确完成,它将返回 [ “α= 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]我知道它与newList.append(字符串)有关,应该放在哪里,有人有什么建议吗?

3 个答案:

答案 0 :(得分:1)

您可以使用列表推导和字符串(和列表!)具有的count函数轻松完成此操作:

  1. 将搜索字符串拆分为字符列表。
  2. 对于搜索字符串中的每个字符,循环输入字符串并确定其发生的次数(通过count)。
  3. 示例:

    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)))
    

答案 1 :(得分:0)

这是使用计算机提到的Counter的可能解决方案,

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']

答案 2 :(得分:0)

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中有重复的字符,则输出只会显示一个。)