Python计算随机列表中数字重复的次数

时间:2017-09-10 21:06:28

标签: python python-3.x

我已经生成了一个1-100的随机数列表,我想计算重复的次数。例如[1,2,2,3,3,3,4]有1个额外的2和2个额外的三分,所以3个重复。我想在不使用任何类型的功能的情况下实现这一目标。

这是我的尝试:

import random

counter = 0
compList = []
num = random.randint(0,100)

for i in range(0,100):
  comp_num = random.randint(0,100)
  compList.append(comp_num)

  print(compList)
  print(counter)

2 个答案:

答案 0 :(得分:1)

在添加之前,只需检查该号码是否在列表中。

import random

counter=0
compList=[]

for i in range(100): # don't need range(0,100)...zero is implied.
    comp_num=random.randint(0,100)
    if comp_num in compList: # if number is already in list count it as a repetition.
        counter += 1
    compList.append(comp_num)

# don't indent this under the for loop
print(sorted(compList)) # sorted so you can check the result.
print('repititions:',counter)

答案 1 :(得分:1)

根据您的评论,我了解您希望计算列表中与前一个元素相等的元素。这等于列表中元素的数量减去列表中 distinct 元素的数量。填写完毕后,如果compList是您的列表,那么您需要

repetitions_count = len(compList) - len(set(compList))

因为set()只包含列表中每个值的一个副本。

在您的示例compList = [1,2,2,3,3,3,4]中,根据需要,结果为3

顺便说一下,还有另一种方法来创建更快,更短,更pythonic的列表 - 即,这个oneliner:

compList = [random.randint(0,100) for v in range(0,100)]