用户定义的函数来计算出现的随机生成的列表包含一个以n开头的整数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用户定义的函数来计算出现的随机生成的列表包含一个以n开头的整数相关的知识,希望对你有一定的参考价值。

一般来说是python和编程的新手。我编写了一个函数来生成一个没有重复项的随机列表和许多其他可调用函数来计算该列表中的内容(例如,中位数,平均值,平均值,赔率,%n等)

问题:

  1. 编写一个函数来计算以1和1开头的整数数
  2. 编写一个函数来计算以1结尾的整数数

我的代码是

import random 
def fill(nx, x, y):
    lx = []
    j = 0
    while (j < nx):
        randNum = random.randint(x, y)
        if randNum not in lx:
            lx.append(randNum)
            j = j + 1
    return lx


def digit1x(lx):
#some kind of count
    cnt_1x = 0
#loop to iterate lx?
    for i in lx: # not sure what to really do from here
        if i == 
    return 0


 def digitx1(lx):
     # same problem 
 return 0

 def sum(lx):
     s=0
     for i in lx:
     s+=i
 return s

Calling the Functions

n = 25 
a = 10 
b = 60 
myList = fill(n, a, b) 
print(myList)

Output

[32, 27, 57, 17, 14, 55, 29, 42, 23, 12, 11, 47, 60, 41, 31, 20, 
21, 26, 56, 35, 30, 44, 54, 10, 50]

Sum ==   844 
Minimum  10 
Maximum ==  60 
Average ==  33.76

Expected

x = digit1x(myList) 
print("10 the number of integers that start with the digit 1 == ", x) 


output: "...==" 5  



y = digitx1(myList)
 print("11 the number of integers that end with the digit 1 == ", y)


output:"...==" 4
答案
def digit1x(lx):
    return len([i for i in lx if str(i)[0]=='1'])

def digitx1(lx):
    return len([i for i in lx if str(i)[-1]=='1'])

如果你缺乏内存和处理资源:

def digit1x(lx):
    return sum(1 for i in lx if i%10==1])

def digitx1(lx):
    return sum(1 for i in lx if i/(10**int(math.log(i,10)))==1)

在这种情况下,您将避免字符串转换并仅使用一些快速计算。您还使用生成器作为总和,因此不会创建额外的列表。

另一答案

这应该做的工作

def count1(lx):
    return len([i for i in lx if i%10==1])

以上是关于用户定义的函数来计算出现的随机生成的列表包含一个以n开头的整数的主要内容,如果未能解决你的问题,请参考以下文章

模拟算法

用随机数计算数组中出现的次数,没有方法或 C# 中的列表

python 生成包含100个两位数随机整数的元组

python两个10以内的随机整数以第一个随机整数为半径第二个随机整数为高,计算并输出圆锥体的体积

python 定义一个函数:能产生1-20之间指定的个数的随机数(随机数要求保存到列表中),参数是随机数的个数?

python两个10以内的随机整数以第一个随机整数为半径第二个随机整数为高,计算并输出圆锥体的体积