场景,具有任意数量的行和列的二维列表,程序返回列表中最大值的行索引和列索引的列表。示例
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
答案 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
粗略的,就像其他答案实际上并没有在结果数组中找到索引