我想知道子列表在彼此旁边的列表中有多少次。
从另一个问题,我收到以下代码来确定子列表是否在列表中:
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。
答案 0 :(得分:0)
您可以在列表推导中使用LiveData
和zip
来查找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}