是否可以将stdin输入附加到Θ(n)Python中的列表中

问题描述 投票:0回答:2

我有一个问题,我需要将项目添加到列表中。它必须使用stdin,并且在Θ(n)中。我似乎只能用Θ(n ^ 2)得到它。这是我的代码:

for i in range(int(r1)): # size of list being made
    for line in sys.stdin.readline().strip().split(" "):
        a.append(line)
Input:  Output: [1, 2, 3]
1
2
3

据我所知,它在Θ(n ^ 2)。我试过这样做:

for i in range(int(r1)): # size of list being made
    a.append(sys.stdin.readline().strip().split(" "))
Input:  Output: [[1], [2], [3]]
1
2
3

因为第二次尝试的元素在他们自己的子列表中,所以它们不适用于我的程序的其余部分。任何adivce?

python python-3.x stdin
2个回答
1
投票

你尝试过使用extend而不是append吗?

a.extend(sys.stdin.readline().strip().split(" "))

解释是在这个question

你也可以检查这个cheat sheet的复杂符号


1
投票

这不是Θ(n),也不是Θ(n ^ 2)。复杂性取决于许多不同的变量:正在制作的列表的大小,以及每行stdin上的空格数。外部for循环执行list-size次数;该循环的主体执行每行数的空格数。因此,对于[0,r]中的所有i,您的复杂度更像是Θ(r * k_i),其中k_i是第i个stdin的空格数。

© www.soinside.com 2019 - 2024. All rights reserved.