有一些类似的问题,但对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]),对应到a,a,a,将返回3, 0, 0
。相同的结果来自第二个字符,对应于a,b,b。字符串中的第三个字符(对应于b,d,b)将返回2, 1, 0
,依此类推,直到到达字符串末尾。
我知道如何计算,例如,某个字符在列表中的次数,但我不确定如何遍历嵌套列表并总结结果。
你们中的任何人能帮助我吗?
谢谢!
答案 0 :(得分: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)
但是我建议理解嵌套列表理解(和生成器表达式)形式,而不是求助于长扩展形式。