Python 3.3中的排序
我试图对从文件中引入的100个两位数整数列表进行排序,由于某种原因,sorted()函数似乎没有做任何更改。我已经用sorted函数搜索过类似的问题,其中大多数问题都是因为我所包含的int没有类型转换。请让我知道我的逻辑哪里出了问题Python 3.3中的排序,python,sorting,file-io,casting,int,Python,Sorting,File Io,Casting,Int,我试图对从文件中引入的100个两位数整数列表进行排序,由于某种原因,sorted()函数似乎没有做任何更改。我已经用sorted函数搜索过类似的问题,其中大多数问题都是因为我所包含的int没有类型转换。请让我知道我的逻辑哪里出了问题 #!/usr/bin/python import copy data = [] with open('afile.txt') as file: for line in file: line = line.split() # to deal with bla
#!/usr/bin/python
import copy
data = []
with open('afile.txt') as file:
for line in file:
line = line.split() # to deal with blank
if line: # lines (ie skip them)
line = [int(i) for i in line]
data.append(copy.copy(line))
newdata = sorted(data)
print(newdata)
编辑:
输入仅仅是一个一到两位数以及它们之间的空格。
例17 8 97 1 26数据最终成为一个列表列表,你确定这就是你想要的吗 也许取代
data.append(copy.copy(line))
与
是否有多行,每行上都有多个数字?您的输入格式如何?你能举个例子(比如5或6个整数)来回答这个问题吗?
data
是一个列表列表。。您希望排序对它做什么?在这个代码中,data
是一个列表列表。更改数据。将附加到数据。扩展并查看是否获得更好的结果。谢谢大家,我没有意识到我创建了一个列表列表。旁注:您不需要使用复制
模块来复制列表。在python3中,list有一个返回列表副本的copy()
方法。或者,只需执行list(其他列表)
即可创建副本。一种更模糊(更短)的方法是使用切片:一些_list[:]
将创建一个副本([:]
意味着从开始到结束进行切片,因为开始
和停止
参数被省略)。真棒,非常感谢+当我能代表的时候(直到我自己挣到一些钱之前,现在还不能)。@Demosthanes-几分钟后,你就可以接受答案,这也会给你一些代表。另外,如果每行一个数字(如gnibbler的结束问题中所述),你可以使用data.append(int(line.strip())
-在对每个字符串调用int
之前,通常使用split
将类似“5 7 10”
的内容转换为一个列表[“5”、“7”、“10”]
。所以这取决于你的实际投入。
data.extend(line)