我是Python的新手,并试图找出如何执行以下操作。
X = [ 1 2 3
4 5 6
7 8 9
10 11 12];
这样第一列X[0]
就是
X[0] =[1
4
7
10];
第二列X[1]
是,
X[1] =[2
5
8
11];
和第三列X[2]
是,
X[2] =[3
6
9
12];
我想要做的是生成一个随机数k
,如果第一列X[0]
中的任何值大于k
我想要乘以第三列列函数(2*X[0]
),如果任何值小于k
,我想乘以不同的函数(2*k
)。
因此,如果k=2
,则第三列变为:
和第三栏X[2]
是,
X[2] =[3*2*k
6*2*X[0,1]
9*2*X[0,2]
12*2*X[0,3] ];
有简洁的方法吗?
答案 0 :(得分:1)
# inverted your rows and columns and got them in a list of list
X = [[1,4,7,10],
[2,5,8,11],
[3,6,9,12]]
# lets generate random number k between 0 and 1000
import random
k = random.randint(0, 1000)
# the conditional
for n in X[0]:
if n > k:
X[2] = your_function(X[2])
if n < k:
X[2] = your_other_function(X[2])
我很确定有更好的方法可以做到这一点,但这个看起来很简单。当然your_function和your_other_function取决于你,在任何情况下我都不清楚你想要什么。
另外,你有没有想过这个?如果X [0]中的所有值都恰好等于k,则这两个函数不会被应用的唯一方法,这似乎不太可能。
答案 1 :(得分:0)
X = [
[ 1, 4, 7, 10 ],
[ 2, 5, 8, 11 ],
[ 3, 6, 9, 12 ] ]
def mapping(x):
if x[0] < K: return x[1]*2*K
elif x[0] > K: return x[1]*2*x[0]
else: return x[1]
K = 2
X[2] = map(mapping, zip(X[0], X[2]))