在具有名称的循环中创建函数取决于可迭代性



我的目标:用一个名为ni的函数从数字x中得到位置i的数字。

例如:(i=3并且x=12345(=>n3(12345(==4。

我的任务围绕着大量的数字操作,我可以拥有多达10**24的数字。

我想创建24个函数:n1-n2。。n24在这样的for循环中一次完成:

for i in range(1,25):
def n`i`(x):
return int(str(x)[i])

一般来说,如何从数据列表中自动创建函数?

我对编码还是个新手,非常感谢您的建议!

正是您想要的。

for i in range(1, 10):
def fn(x):
return int(str(x)[i])

globals()[f"n{i}"] = fn  # update global variables dictionary
#use them like
n3(123456)

但我建议定义一个同时接受两个参数的函数并使用它

def ni(i,x):
return int(str(x)[i])
ni(3, 123456) 

尝试这个

#example data
import random
ranges=25
n = 10**24
number = [random.randint(n,n*10) for x in range(ranges)]
def ni(x,i):
return int(str(x)[i])
#print out all data and get the digit in the position i
for i in range(25):
print(ni(number[i],i))
#print a data and get all digit
for i in range(25):
print(ni(number[1],i))
#print a data and get the digit in the position i
ni(number[9],3)
ni(number[7],2)
ni(number[8],7)

我使用了以下简单代码来声明不同的函数名(网格名是我的情况(和不同的迭代次数。

meshname="mesh_{}".format(It)

为此";它";表示迭代次数。

最新更新