如何让用户输入二维列表?蟒蛇

时间:2014-05-19 17:15:42

标签: python

场景,具有任意数量的行和列的二维列表,程序返回列表中最大值的行索引和列索引的列表。示例

print max_position([[2,4],[6,0],[2,6]])

可视化列表:

2,6,2
4,0,6

结果为[(1,0),(2,1)]

现在,我如何允许用户输入二维列表的任何行或列以适用于我的代码?

代码:

def max_position(list2D):
    if not list2D:
        return []
    else:
        maxi = list2D[0][0]
        pos = [] #initialise with no position
        for row in range(len(list2D)):
            for col in range(len(list2D[row])):

                if (list2D[row][col] == maxi):
                    if (row,col) != (0,0):
                        pos.append((row,col))

                elif (list2D[row][col] > maxi): # new maximum found
                    pos = [(row,col)] 
                    maxi = list2D[row][col]

        return pos

3 个答案:

答案 0 :(得分:3)

import ast
data = raw_input("Enter your 2D array in the form [[], []]:")
x = ast.literal_eval(data)

# in
[[1,2],[3,4],[5,6]]

# out
x
[[1, 2], [3, 4], [5, 6]]

type(x)
<type 'list'>

这在错误处理方面没有太大作用,它们必须输入一个语法正确的2D数组,但它会做到这一点。

答案 1 :(得分:1)

这样的事情怎么样?这样您就可以在每个子列表中一次输入一行,并将其添加到整个列表中。

mylist = []

done = False
while not done: 
    line = raw_input()
    if line != '': 
        mylist += [line.split(',')]
    else:
        done = True

print mylist

答案 2 :(得分:0)

print "Enter space seperated values, or leave blank to finish"
print list(iter(lambda : map(int,raw_input().split()),[]))

是一种有趣的方式:P

粗略的,就像其他答案实际上并没有在结果数组中找到索引