计算子列表在列表中的次数

时间:2018-03-04 12:27:02

标签: python python-3.x list

我想知道子列表在彼此旁边的列表中有多少次。

从另一个问题,我收到以下代码来确定子列表是否在列表中:

list_sequence = ['Example 64', 'Example 32', 'Example 16']

my_list = ['Example 128', 'Example 64', 'Example 32', 'Example 16', 'Example 256', 'Example 512', 'Example 1024']

print(str(list_sequence)[1:-1] in str(my_list))

但是我想知道,list_sequence相互之间确定组合的次数是多少次。在顶部示例中它是1,但如果我在开头和最后添加list_sequence,它仍然会1.如果我在my_list中的示例16后面添加它,它将是2。

2 个答案:

答案 0 :(得分:0)

您可以在列表推导中使用LiveDatazip来查找enumerate出现的地方的相应索引。然后选择那些减法等于3(sub_list的长度):

sub_list

您只在In [6]: list_sequence = ['Example 64', 'Example 32', 'Example 16'] ...: ...: my_list = ['Example 128', 'Example 64', 'Example 32', 'Example 16', 'Example 64', 'Example 32', 'Example 16', 'Example 256', 'Example 512', 'E ...: xample 1024','Example 64', 'Example 32', 'Example 16'] ...: In [7]: indices = [index for index, (i, j, k) in enumerate(zip(my_list, my_list[1:], my_list[2:])) if list_sequence == [i, j, k]] Out[7]: [1, 4, 10] In [8]: sum(2 * (j-i == len(list_sequence)) for i, j in zip(indices, indices[1:])) Out[8]: 2 中使用生成器表达式来查找出现次数:

sum

但请注意,这也会包含重叠,因为In [4]: sum(list_sequence == [i, j, k] for i, j, k in zip(my_list, my_list[1:], my_list[2:])) Out[4]: 1 会为您提供所有后续三元组。

答案 1 :(得分:0)

通过创建list_sequence字典

来计数
list_sequence = ['Example 64', 'Example 32', 'Example 16']

my_list = ['Example 128', 'Example 64', 'Example 32', 'Example 16','Example 16', 'Example 256', 'Example 512', 'Example 1024']
dic=dict()
for i in list_sequence :
    for j in my_list :
        if i==j:
            dic[i]=dic.get(i,0)+1
print(dic)
  

{'示例64':1,'示例32':1,'示例16':2}