小白解题思路,另外搭配详细注释,非while循环方式
list1 = input().split()[1:] # 收集数据条,排除第一位个数位
R = input().split()[1:] # 收集规则条,排除第一位个数位
new_R = [] # 创建空的新规则列表,准备接收去重后的规则条
for j in R: # 循环遍历原始规则条
if j not in new_R: # 判断:如果元素不在新列表中
new_R.append(j) # 将元素添加进新列表
'''整个过程是对原始规则条的去重操作'''
res = [] # 创建空的结果列表
for i in sorted(new_R,key=int): # 对新规则条以整数型进行升序排序(sorted(reverse=False)默认升序,key=int表示排序前将列表内元素先转化为整数型再排序,输出结果仍保留原始元素形式),然后遍历出单个元素
matches = [] # 创建空的新列表,准备接收数据条的索引+值
for k, v in enumerate(list1): # 为数据条添加索引,k,v分别遍历出索引和值
if i in v: # 判断:如果规则i在数据值v中
matches.append(k) # 将对应的索引k和值v添加进列表
matches.append(v)
if matches: # 判断:如果matches为True
res.append(i) # 在结果列表中添加规则i
res.append(str(len(matches) // 2)) # 在结果列表中添加对应规则的数据个数(因为matches中是索引+值的形式,所以数据个数=总个数//2)
res.extend(matches) # 将matches添加到res列表的最末尾处
count = len(res) # 统计res列表的长度(即 结果列表中最终有多少个元素)
for item in ([count] + res): # 将总个数列表化后与res列表结合,循环读取其中的元素
print(item,end=' ') # 以元素+“ ”的形式打印输出

京公网安备 11010502036488号