0

如果我有这样的点的 2dlist ......

myList=[['ab','0_3','-1','1'],['bm','2_1','-3','2'],['am','4_1','-1','3'],...]]

例如,其中'-1','1'是 x,y 坐标(最后 2 列),我想只显示列表的一部分,其索引如下所示......

[0] ab    # I don't want to display the other list items, just the index and first col
[1] bm
[2] am

...因此用户可以通过索引号选择其中一个来制作原点。我想我可以这样列举......

for row in enumerate(myList):
     i, a= row
     col= (i, a[0])
     newList.append(col)
     print cols

但是一旦我要求用户选择一个即。用户选择'0'并设置变量origin='ab',我怎样才能获得与原点关联的x,y(或[2],[3])列用作原点坐标(我需要能够与其他列进行比较名单)?

使用这种方法,我可以以某种方式使用分配给所选点的变量,即。origin = ab, 然后得到它的 x,y 并将它们分配给 x1, y1... 因为 enumerate 给出了 2 个元组 (i, a) 并将它们附加到newList, 是我在 中的所有内容newList, 还是我也可以附加其他列但是不显示它们?我希望我的解释足够清楚......我只有糟糕的代码 atm


所以我终于得到了大部分的工作......

import csv
myList=[]    
try:
    csvr = open('testfile.csv','r')
    next(csvr, None)
    theList = csv.reader(csvr)

    for row in theList:
        myList.append(row)

    for row in enumerate(myList):
        i, a = row
    print i, a[0]
except IOError:
    print 'Error!!!'


try:
   choice = raw_input("Select a set: ") # Can also enter 'e'
   if choice=='e'
      print 'exiting'
   else: 
        pass 
    user_choice = myList[int(choice)]   
    name, id, x, y= user_choice     
    print name, id, 
    return float(x), float(y)    
except:     
   print 'error'

它按预期打印,我现在可以返回 x, y,这很好,但它只是不断提示我输入一个数字。有什么建议么?

4

1 回答 1

0

1)保持列表格式,可以使用用户的选择作为列表索引:

myList = [['ab','0_3','-1','1'],['bm','2_1','-3','2'],['am','4_1','-1','3']]

for row in enumerate(myList):
     i, a = row
     print i, a[0]


choice = int(raw_input("Select a set: "))
user_choice = myList[choice]

name, id, x, y = user_choice

print name, id, float(x) + float(y)  # use float() to convert strings to floats

样本输出:

~ $ python tester.py
0 ab
1 bm
2 am
Select a set: 1
bm 2_1 -1.0
于 2013-05-20T21:36:03.267 回答