import sys,os,csv
iFile=open('./file_copd.out','rU')
earth = [0,0]
##getDistance return distance given two stars
def getDistance(star1,star2):
return sqrt((star1[0]-star2[0])**2 +(star1[1]-star2[1])**2)
##diction dict_galaxy looks like this {key,distance} key is the seq assign to each star, value is a list [distance,its cordinance]
##{1,[distance1,[x,y]];2,[distance2,[x,y]]}
dict_galaxy={}
#list_galaxy=[]
count = 0
sour=iFile.readlines()
for line in sour:
star=line.split(',') ##Star is a list [x,y]
dict_galaxy[count]=[getDistance(earth,star),star]
count++
###Now sort this dictionary based on their distance, and return you a list of keys.
list_sorted_key = sorted(dict_galaxy,key=lambda x:dict_galaxy[x][0])
print 'is this what you want %s'%(list_sorted_key[:100].to_s)
iFile.close()
可能な複製[長さnのリストにx個の最小整数を見つける](http://stackoverflow.com/questions/3764355/find-the-x-smallest-integers-in-a-list-of-長さ - n) – hugomg
はい、残念です。興味深い質問ですが、すでにここで回答しています。 –
@missingno:これは似たようなものですが、私が上記で提供した解決策によって簡単に解決できるのです。ここでは余分な計算が必要なので、最小限に抑える方法があるかどうかを知りたいと思っていました。 – noMAD