我想从用户那里获取这样的嵌套列表。
[(2, 5), (1, 2), (4, 4), (2, 3), (2, 1)]
- 醇>
编写一个Python程序来获取一个列表,按最后一个元素的递增顺序排序 在来自给定非空元组列表的每个元组中。转到编辑器
示例清单:
[(2, 5), (1, 2), (4, 4), (2, 3), (2, 1)]
预期结果:
[(2, 1), (1, 2), (2, 3), (4, 4), (2, 5)]
def sorted_lst(lst):
nlst = []
for i in lst:
if i[1] < (i+1)[1]:
nlst += i
else:
nlst += i+1
return nlst
ui = int(input("How many input?"))
ulst = []
for i in range(ui):
ui1 = list(map(int,input("Enter elements: ").split(',')))
ulst += ui1
print(ulst)
print(sorted_lst(ulst))
答案 0 :(得分:0)
这一行:
ui1 = list(map(int,input("Enter elements: ").split(',')))
将x,y
形式的每个用户输入行转换为2个列表[x,y]。但是你的问题陈述说它应该是一个元组:
ui1 = tuple(map(int,input("Enter elements: ").split(',')))
这一行:
ulst += ui1
不会将用户的输入元组作为列表ulst
中的新元素附加。它附加了输入元组的元素,所以你最终得到的是一个长度为2*ui
的整数列表,而不是长度为ui
的2元组列表。请改用ulst.append(ui1)
。
最后,除非你的作业要求它,否则不编写你自己的排序函数。
print (sorted(ulst,key = lambda a: a[1]))
您的功能sorted_lst
很好地说明了原因。
答案 1 :(得分:0)
我是python的新手。我几天前才开始学习,但我想我知道如何将嵌套列表作为用户的输入。在python 3中试试这个。
ulst = [[int(input(f"Enter row {i+1}, column {j+1}: ")) for j in range(2)] for i in range(5)]