2012-02-02 86 views
0

只是我有一個問題,似乎無法弄清楚。關聯列表到每個

我有兩個表:表1和表2:

table1=[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 

table2=[0 for i in range (21)] 

我想運行:

import random 
for d1 in range(21): 
    table2[d1] = random.expovariate(gamma_val) 

但如果價值table1 = 1,在table2那個位置應運行random.expovariate(x), ,如果沒有1運行random.expovariate(y)

回答

2

如果我理解正確,你會不會只是:

import random 
for d1 in range(21): 
    if table1[d1]: #1 evaluates to true in python 
     table2[d1] = random.expovariate(x) 
    else: 
     table2[d1] = random.expovariate(y) 
1
table2 = [] 
for d1 in table1: 
    value = x if d1 == 1 else y 
    table2.append(random.expovariate(value)) 
1

另一種選擇可能是:

import random 
options = [y, x] 
for d1 in range(21): 
    table2[d1] = random.expovariate(options[table1[d1]]) 

我使用的值(01)爲options的指標名單。

1

如果你想表2是大小表1相同,你可以(也應該)使用是這樣的:

table2 = [random.expovariate(x if d1 else y) for d1 in table1]