使用python检查列表中的一个单词是否跟随另一个单词

时间:2017-01-13 15:01:41

标签: python python-3.x

我想计算使用python在给定列表中相互跟随的单词的出现次数。 E.g。

my_list = ['ABC', 'DEF', 'PQR', 'ASD', 'ABC', 'DEF', 'ZXC', 'ABC', 'PQR'] 

在上面的列表中,'ABC'后跟'DEF'的次数为2

请帮助我。 谢谢。

2 个答案:

答案 0 :(得分:4)

执行此操作的一种非常有效的方法可能是:

count = 0
for first,second in zip(my_list,my_list[1:]):
    if first == 'ABC' and second == 'DEF':
        count += 1

或使用sum(..)

中的单行
count = sum(1 for first,second in zip(my_list,my_list[1:]) if first == 'ABC' and second == 'DEF')

或者正如@khelwood所说,你可以利用布尔的int(..)返回01的事实:

count = sum(first == 'ABC' and second == 'DEF' for first,second in zip(my_list,my_list[1:]))

答案 1 :(得分:3)

直接方式不涉及为成对迭代创建额外切片,只需使用索引:

sum(1 for index in range(len(my_list) - 1) 
    if my_list[index] == 'ABC' and my_list[index + 1] == 'DEF')

或者,有点短(感谢@khelwood):

sum(my_list[index] == 'ABC' and my_list[index + 1] == 'DEF' 
    for index in range(len(my_list) - 1))

或者,没有sum()并且展开了:

c = 0
for index in range(len(my_list) - 1):
    if my_list[index] == 'ABC' and my_list[index + 1] == 'DEF':
        c += 1

或者:

c = 0
for index in range(len(my_list) - 1):
    c += my_list[index] == 'ABC' and my_list[index + 1] == 'DEF'

相互之间的相关材料: