我最近拿起Python并且正在处理列表的过程。我正在使用一个测试文件,其中包含由选项卡缩进的几行字符,然后将其传递到我的python程序中。 我的Python脚本的目的是将每行插入到列表中,使用长度作为索引,这意味着列表将自动排序。我正在考虑最基本的案例,不关心任何复杂的案例。
我的python代码如下;
newList = []
for line in sys.stdin:
data = line.strip().split('\t')
size = len(data)
newList.insert(size, data)
for i in range(len(newList)):
print (newList[i])
我的“测试”文件在下面;
2 2 2 2
1
3 2
2 3 3 3 3
3 3 3
我对python脚本输出的期望是按以下顺序打印列表内容:按长度排序;
['1']
['3', '2']
['3', '3', '3']
['2', '2', '2', '2']
['2', '3', '3', '3', '3']
但是,当我将测试文件传递给我的python脚本时,我得到以下内容;
cat test | ./listSort.py
['2', '2', '2', '2']
['1']
['3', '2']
['3', '3', '3']
['2', '3', '3', '3', '3']
输出['2','2','2','2']的第一行不正确。我试图弄清楚为什么它没有被打印在第四行(因为长度为4,这意味着它将被插入到列表的第四个索引中)。有人可以提供一些见解,为什么这是?我的理解是,我将'数据'作为索引插入到列表中,这意味着当我打印出列表的内容时,它们将按照排序顺序打印。
在此先感谢!
尝试重播使用笔的算法&纸张,你会明白为什么结果是错误的。 – mkrieger1
还要注意“无用的猫”:'cat filename |程序“与”程序<文件名“相同。 – mkrieger1
或者如果你对列表的理解是错误的,那么使用笔和纸可能不会帮助你......如果你有一个长度列表* N *然后插入索引* n *> * N *将只是将它附加到列表的末尾。例如。在索引“4”处插入'x'到空列表(* N * = 0)中仍然会导致列表'[x]',而不是像[[ - , - , - , - ,x]'。 – mkrieger1