Python:对嵌套列表子集的元素执行数学运算
我是一名编码初学者,在对嵌套列表的元素进行数学运算时遇到了一个问题。我有一个嵌套列表q: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)) 我还
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;我想创建一个新列表。