繁体   English   中英

如何使用for循环将函数输出存储在单独的变量中?

[英]How do I use a for loop to store function output in separate variables?

假设我具有以下功能:

 def function3(start, end):
    """Read MO information."""
    config_found = False
    var = []
    for line in v['molecular orbital primitive coefficients']:
        if line.strip() == end:
            config_found = False
        elif config_found:
            i = line.rstrip()
            var.append(i)
        elif line.strip() == start:
            config_found = True
    var1 = [elem.strip() for elem in var]
    var2 = var1[1:-1]
    var3 = np.array([line.split() for line in var2])
    var3 = np.asarray([list(map(float, item)) for item in var3])
    return var3

并假设我将其输出存储在这样的变量中:

    monumber1=function3('1','2')
    monumber2=function3('2','3')
    monumber3=function3('3','4')

等等

有没有一种方法可以让我多次执行此函数,并将输出存储在一定数量的变量中,而无需每次都手动设置变量名和函数参数? 也许使用for循环? 这是我的尝试,但我正在努力使其发挥作用:

 for i in xrange(70):
    monumber[x] = function3([i],[i+1])

谢谢!

问题是您使用方括号。 这是应该起作用的代码:

monumber = [] # make it an empty list
for i in xrange(70):
    monumber.append(function3(str(i),str(i+1))) # you had string integers, so cast

对于更Pythonic的单行代码,您可以使用列表推导:

monumber = [function3(str(i),str(i+1)) for i in xrange(70)]

现在已经创建了monumber变量,我可以使用语法monumber[i]访问任何给定索引i的元素。 一些例子:

first = monumber[0] # gets the first element of monumber
last = monumber[-1] # gets the last index of monumber
for i in xrange(10,20): # starts at i = 10 and ends at i = 19
    print(monumber[i])  # print the i-th element of monumber

你差不多了。 除了您也应该在左侧使用i

monumber[i] = function3([i],[i+1])

现在,这是基本思想,但是仅当monumber已经是具有足够元素的列表时,该代码才起作用,否则将发生IndexError

无需预先创建列表并用占位符填充列表,我们可以向其动态添加新值:

monumber = []
for i in xrange(70):
    monumber.append(function3([i],[i+1]))

另一个问题是,您似乎在混淆函数所使用的不同类型的参数。 在函数主体中,看起来startend都是字符串,但是在您的代码中,您给出的列表各有一个整数 在不更改功能的情况下,您可以执行以下操作:

monumber = []
for i in xrange(70):
    monumber.append(function3(str(i),str(i+1)))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM