-2

有一些类似的问题,但对 python 来说是新手,我不知道如何组合它们,希望有人能以正确的方式指出我。

我有一个嵌套列表,比如说:
nested_list = [["a", "b"], ["c", "d"], ["e", "f"]]
和另一个嵌套列表,其中包含我稍后用于识别的字符串(name1,name2...)和每个字符串(aab,abd,abb....):
another_list = [["name1", "aab..."], ["name2", "abd..."], ["name3", "abb..."], [....

我需要遍历字符串,首先获取每个字符串中的第一个字符并计算它们在nested_list 中的次数。所以,取string1的第一个字符(another_list[0][1]),string2的第一个字符(another_list[1][1]),string3的第一个字符(another_list[2][1]),对应to a, a, a, 会返回3, 0, 0. 相同的结果将来自第二个字符,对应于 a、b、b。字符串中对应于 b,d,b 的第三个字符将返回2, 1, 0,依此类推,直到到达字符串的末尾。
例如,我知道如何计算某个字符在列表中出现的次数,但我不确定如何遍历嵌套列表并总结结果。
你们有人能帮我吗?

谢谢!

4

1 回答 1

1

首先,你真的必须学会清楚地表达你的问题,以及以一种可理解的方式格式化代码。目前,您的句子在您提供的示例数据/代码的上下文中没有意义。

然而...

这可以满足您的需要:

nested_list = [['a', 'b'], ['c', 'd'], ['e', 'f']]
another_list = [['name0', 'aaa'], ['name1', 'aab'], ['name2', 'abd'], ['name3', 'abb']]

result = [tuple(sum(1 for c in s if c in lst)
                for lst in nested_list)
          for _, s in another_list]

并将result包含:

[(3, 0, 0), (3, 0, 0), (2, 1, 0), (3, 0, 0)]

最后一部分可以扩展为:

result = []
for _, s in another_list:
    item = ()
    for lst in nested_list:
        count = 0
        for c in s:
            if c in lst:
                count += 1
        item += (count,)
    result.append(item)

但我建议理解嵌套列表理解(和生成器表达式)形式,而不是诉诸长扩展形式。

于 2013-10-23T20:48:38.203 回答