2016-12-16 28 views
1

我有三个数组ID边缘Xn,我需要使用此信息创建第四个数组。 ID中包含不同的ID:如何使用Python 2.7中其他数组的索引创建数组?

IDs = ['48', '63', '77', '108', '306'] 

在边缘被一对ID的:

Edges = [('48', '77'), ('63', '48'), ('77', '48'), ('77', '108'), ('108', '48'), ('306', '48')]) 

和Xn相应的ID的坐标:

Xn = [3.08, 4.96, 4.04, 1.68, 1.6] 

我想创建一个阵列Xe组合三个阵列的信息,即,在阵列边缘(例如,边缘('48','77'))中识别ID的位置的位置是ID(或0和在Python 2),因此使用第一和第三坐标XN(3.08,4.04)和对于所有由单词“无”分离的边缘做同样的,所以我可以有一个这样的阵列的Xe:

Xe = [3.08, 4.04, None, 4.96, 3.08, None, 4.04, 3.08, None, 4.04, 1.68, None, 1.68, 3.08, None, 1.60, 3.08, None] 

如果你能帮助我,我会非常感激!

干杯!

回答

1

测试工作完美

IDs = ['48', '63', '77', '108', '306'] 
Edges = [('48', '77'), ('63', '48'), ('77', '48'), ('77', '108'), ('108', '48'), ('306', '48')] 
Xn = [3.08, 4.96, 4.04, 1.68, 1.6] 
Xe = [] 

for i in xrange(len(Edges)): 
    for j in xrange(2): 
     if Edges[i][j] in IDs: 
      Xe.append(Xn[IDs.index(Edges[i][j])]) 
    Xe.append(None) 

print Xe 
0
IDs = ['48', '63', '77', '108', '306'] 
Edges = [('48', '77'), ('63', '48'), ('77', '48'), ('77', '108'), ('108', '48'), ('306', '48')]) 
Xn = [3.08, 4.96, 4.04, 1.68, 1.6] 
Xe = [0]*len(Edges)*3 
def findid(arrayl,num): 
For i in range (arrayl): 
    if arrayl[i]==num: 
    return i 
return -1 
j=0 
For i in range (len(Edges)): 
j+=1 
Xe[j]=Xn[findid(IDs,Edge[i][0])] 
j+=1 
Xe[j]=Xn[findid(IDs,Edge[i][1])] 
Xe[j+1]="None" 
j+=2 

我认为这可能工作,我没有python解释器,所以我没有测试它,尝试它,并说如果它工作! :)

相关问题