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

时间:2019-02-22 16:33:05

标签: python python-3.x stdin

我遇到了需要在列表中添加项目的问题。它必须使用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

由于第二次尝试的元素在其自己的子列表中,因此它们不适用于我的程序的其余部分。有没有?

2 个答案:

答案 0 :(得分:1)

您是否尝试过使用扩展而不是附加?

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

对此question

进行了解释

您也可以检查此cheat sheet的复杂度标记

答案 1 :(得分:1)

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