2017-04-05 5 views
0

私はコーディングの初心者です。ネストされたリストの要素に対して数学的演算を行うことに関する問題があります。私も持っているPython:ネストされたリストのサブセットの要素に対して算術演算を実行する

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を持つ

t = 10 
capacity = 1000 

リストのサブセットの単一の要素xをコールすると仮定。 xの代わりにabs(int(-t/(capacity//x)))

この新しい入れ子リストを作成するにはどうしたらいいですか? ありがとうございます!

+0

は、 'f1'、' f2'何ですか... ? – timgeb

+1

ようこそStackOverflowへ。 [良い質問をするにはどうすればよいですか?](http://stackoverflow.com/help/how-to-ask)と[最小限の完全かつ検証可能なサンプルを作成する方法](http:// stackoverflow。 com/help/mcve)、そしてあなたの質問を書き換えてください。 –

+0

私はあなたが 'numpy'を見るべきだと思います。そこでは、数値の行列や行列全体について数学的演算を行うことができます。 'X = np.array([1、-2、3]); –

答えて

0

それは任意にネストしたリストが上の作品として再帰的な解決策は、より一般的である:

# 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)   
+0

ありがとうございます!この回答は素晴らしいです! –

0

お探しのものがこれです:

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] 
+0

申し訳ありませんが私の質問は明らかにしていないが、英語は私の母国語ではない場合。しかし、私はリストqを変更したくありません。私は新しいリストを作成したい。 –

関連する問題