我正在努力解决这个问题,如果有人能指出我正确的方向,我将不胜感激。
我的问题是:我需要从用户那里得到3个输入才能开始。我必须首先从用户那里获得我的2D列表的尺寸(M和N)。然后我一次在一行中读取矩阵每行的用户输入。最后一个输入是我要排序的列表中的哪个元素。如果每个输入行的长度为4个整数,我可能希望按第二个int排序。
接下来,在我的实际功能中,我必须对其进行排序并打印出来。
我尝试使用嵌套for循环来初始化2d数组。一世 怀疑这里可能出错了,但我不确定。我认为 我已经弄明白了如何对它进行排序。但是,我收到了错误 打印函数,表示语法无效。但语法似乎正确 我
以下是我的代码:
n,m = map(int,raw_input().split())
my_list = []
for x in range(n):
row=[]
for y in range(m):
row.append(list(map(int,raw_input())))
my_list.append(row)
k = int(raw_input())
sorted_list=sorted(my_list,key=lambda x:x[k])
for row in sorted_list:
for val in row:
print '{:4}'.format(val),
print
任何帮助表示感谢。
答案 0 :(得分:0)
我想你想要的是:(我已经打印了几个字符串,以便明确哪些部分正在做什么。)
并未有意维护插入的维度,以明确我们未在以下代码中进行任何类型的验证。
print 'Enter dimension col X row:'
col, row = map(int, raw_input().split())
print 'col: ' + str(col) + '\trow: ' + str(row)
my_list = []
for r in range(row):
print 'Insert row: ' + str(r)
my_list.append(map(int, raw_input().split()))
print 'You have inserted: '
print(my_list)
print 'Position by which the array to be sorted: '
index = int(raw_input())
sorted_list = sorted(my_list, key=lambda x: x[index])
print 'Sorted by: index ' + str(index)
print sorted_list
# Checking if all row has >= 4 elements
def elem_more_then_4(my_2d_array):
for row in my_2d_array:
if len(row) < 4:
return False
return True
if elem_more_then_4(my_list):
sorted_list_ = sorted(my_list, key=lambda x: x[1])
print 'Sorted by 2nd element: '
print sorted_list_
控制台中的互动:
Enter dimension col X row:
5 4
col: 5 row: 4
Insert row: 0
1 2 1 5 4
Insert row: 1
5 1 24 3
Insert row: 2
3 2 1 4 2
Insert row: 3
5 2 1 4 3
You have inserted:
[[1, 2, 1, 5, 4], [5, 1, 24, 3], [3, 2, 1, 4, 2], [5, 2, 1, 4, 3]]
Position by which the array to be sorted:
3
Sorted by: index 3
[[5, 1, 24, 3], [3, 2, 1, 4, 2], [5, 2, 1, 4, 3], [1, 2, 1, 5, 4]]
Sorted by 2nd element:
[[5, 1, 24, 3], [1, 2, 1, 5, 4], [3, 2, 1, 4, 2], [5, 2, 1, 4, 3]]
答案 1 :(得分:0)
同意@Sam Craig所评论的内容。在Python 3.x中打印后需要括号来解决语法错误问题。
在我看来,另一个问题是,您将数组映射到比预期更高的维度矩阵。您可能只想使用row.append(int(input()))而不是row.append(list(map(int,raw_input())))
n,m = map(int,input().split())
my_list = []
for x in range(n):
row=[]
for y in range(m):
row.append(int(input()))
my_list.append(row)
k = int(input())
sorted_list=sorted(my_list,key=lambda x:x[k])
for row in sorted_list:
for val in row:
print('{:4}'.format(val))
print
希望它有所帮助。