Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:对嵌套列表子集的元素执行数学运算_Python_Python 2.7 - Fatal编程技术网

Python:对嵌套列表子集的元素执行数学运算

Python:对嵌套列表子集的元素执行数学运算,python,python-2.7,Python,Python 2.7,我是一名编码初学者,在对嵌套列表的元素进行数学运算时遇到了一个问题。我有一个嵌套列表q: import random point = list (range(1000)) f = ("f1", "f2", "f3", "f4", "f5", "f6") q = [] for i, x1 in enumerate(point): q.append([]) for x2 in f: q[i].append(random.randint(100, 1500)) 我还

我是一名编码初学者,在对嵌套列表的元素进行数学运算时遇到了一个问题。我有一个嵌套列表q:

import random

point = list (range(1000))
f = ("f1", "f2", "f3", "f4", "f5", "f6")
q = []
for i, x1 in enumerate(point):
    q.append([])
    for x2 in f:
        q[i].append(random.randint(100, 1500))
我还:

t = 10
capacity = 1000
假设将x称为列表子集的单个元素;我想要的不是x而是
abs(int(-t/(容量//x))

如何创建这个新的嵌套列表?
提前谢谢

这就是你想要的吗:

from __future__ import division
import random

point = range(1000)
f = ("f1", "f2", "f3", "f4", "f5", "f6")

t = 10
capacity = 1000

q = [[abs(int(-t/(capacity/random.randint(100, 1500)))) for _ in range(len(f))] for _ in point]

递归解决方案更通用,因为它适用于任意嵌套的列表:

# Define function that operates on a single number
def func(x):
    return abs(int(-t/(float(capacity)/x)))   

# Define another function to apply it recursively
def rec_func(x, f):
    # Base case: apply function on numbers (floats or integers)
    if isinstance(x, (float, int)):
        return f(x)
    # Recursive call
    elif isinstance(x, list):
        return [rec_func(el, f) for el in x]
    else:
        raise AttributeError

result = rec_func(q, func)        

什么是f1,
f2
?欢迎来到StackOverflow。请阅读,然后回来重新表述你的问题。我想你应该看看
numpy
。在那里,您可以对整个数组或数字矩阵进行数学运算,例如,
X=np.array([1,-2,3]);Y=abs(X)+5
,这将为您提供
数组([6,7,8])
注意:在Py27中
列表(范围(1000))
相当于
范围(1000)
,因此您可以使用第二种形式。谢谢@tobias_k。这听起来很奇怪,但我正在寻找一种解决方案,它不需要使用numpy或其他科学计算软件包。如果我的问题不清楚,很抱歉,但英语不是我的第一语言。但是我不想修改列表q;我想创建一个新列表。