微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 input().split() 进行列表理解

如何解决使用 input().split() 进行列表理解

我必须读取 N 然后 N 两个数字的元组,如下例所示:

3
1 85
2 91
3 73

之后我想根据第二个元素对它们进行排序,并根据它们输入的顺序打破联系。为此,我想保存一个包含 3 个元素的元组,但我不知道如何将其放入列表理解语法中。

我想要一个相当于:

n = int(input())
l = []
for i in range(n):
    v1,v2 = input().split()
    l.append((int(v1),int(v2),i))

这是我尝试过的:

n = int(input())
l = [(int(v1),i) for v1,v2 in input().split() for i in range(n)]

解决方法

使用 tuple()list comprehension

num_tuples = int(input())
lst = [tuple([int(x) for x in input().split()] + [i]) for i in range(num_tuples)]
print(lst)

示例输入:

2
1 2
3 4

输出:

[(1,2,0),(3,4,1)]
,

可以做这样的事情:

l = [(*map(int,input().split()),i) for i in range(int(input()))]

但这很令人困惑和不可读,为什么在你的 for 循环完全足够的情况下做这样的事情?

,

让我们先写出程序,不要压缩语法来建立我们的起点

n = int(input())
l = []
for i in range(n):
    v1,v2 = input().split()
    l.append((int(v1),int(v2),i))

l = sorted(l,key=lambda x: (x[1],x[2])) # here is the line I'm adding to sort
print(l)
$ python3 test.py
3
1 85
2 91
7 91
[(1,85,(2,91,1),(7,2)]

将 for 循环中的两个语句放入列表推导式中有点复杂——也许更糟:维护或阅读非常困难(尽管前面的两个答案都显示了如何完成),所以如果您想做单行,我在这里建议的是将它放在带有 map 函数的 lambda 中,例如:

def my_function(num):
    v1,v2 = input().split()
    return (int(v1),num)

n = int(input())
l = map(my_function,range(n))

很好读。如果您还想在一行中进行排序(以及其他所有操作),您当然可以这样做:

sorted(map(my_function,range(int(input())),x[2]))
# 1 2
# 2 3
# [(1,3,1)]

以下是整体的样子(我会在弄清楚后添加共享链接):

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?