从下面的代码中,我使用函数generator创建随机数并帮助模拟传入的数据。
from random import randint
def generator(n=1000):
i = 0
while i < n:
yield randint(0, n)
i += 1
对于按升序排序和只获得最低10条记录的排序,我使用以下方法:
out_size = 10
out = []
for num in generator():
if not len(out):
out.append(num)
else:
我有一个需要通过函数计算的数字列表。我需要计算两百万次。我可以这样做,但有没有更简单的方法:
def funcx():
return random.random() # for simplicity we use random
top10 = [] # max len = 10
for i in range(2000000):
j = funcx()
top10.append(j)
top10 = sorted(top10, reverse=True)[:10]
我经常需要从一个列表中选择一定数量的数字,这样它们才是与其他特定数字最接近的数字。
例如:
x0 = 45
n = 3
mylist = [12,32,432,43,54,234,23,543,2]
那么,如何从列表中选择与n最接近的x0数字呢?有内置的方法吗?
topN = [43, 54, 32]
我看到的方式是下面,但它看起来有点复杂:
diffs = sorted([(abs(x - x0), x) for x in mylist])
topN = [d[1] for d in diffs[:n]]
我见过和,但它们都没有介绍如何在有多个值的情况下找到最近的值。
示例:
>>> myList = [1, 4, 5, 9, 10, 12, 15, 17]
>>> min(myList, key=lambda x: abs(x - 16))
15 # How could I get both 17 and 15?
我为了好玩在hackerrank竞赛上试了一道题,然后出现了这个问题。我使用itertools来做这件事,下面是代码:
import itertools
l = []
for _ in range(int(input())):
l.append(int(input()))
max = l[0] * l[len(l)-1]
for a,b in itertools.combinations(l,2):
if max < (a*b):
max = (a*b)
print(max)
他们还有比这更有效的方法吗?因为我在一些我不能访问的测试用例上得到了超
我有一个列表,list_a,它包含浮点数:
list_a = [[[ 0 for i in range(40)] for j in range(1000)]for k in range(47)]
我有一个排序后的版本:
list_a_sorted = list_a
list_a_sorted[0].sort()
因此,对list_a_sorted进行排序,并包含从最低的值开始的list_a的值。让我们假设它如下:
[2.3,3.1.........9]
所以2.3是最低值,但是我怎么知道这是list_a中的第8个元素,还是第15个或第n个元素呢?
因为我的列表很大,所以我也需要尽可能高效地做这
我正在使用heapq从列表中获取最大的元素。我写的程序如下。
import csv
import heapq
f = open("E:/output.csv","r")
read = csv.reader(f)
allrows = [row for row in read]
for i in xrange(0,2):
print allrows[i]
allrows.sort(key=lambda x: x[2]) #this is working properly
it=heapq.nlargest(20,enumerate(allrows),
我只需要检索3个最小的元素,并且想知道是否有一种方法可以改进我下面的代码以使堆的大小保持更小--我认为如果我们只需要将堆大小保持为3,就足够了。但无法在heapq中找到要调整的选项。
换句话说,我想要维护一个偶尔更新的三元素堆。
import heapq
def heapsort(iterable):
h = []
for value in iterable:
heapq.heappush(h, value)
return [heapq.heappop(h) for i in range(len(h))]
if __name__ == "__main
所以,我想把列表中最大元素的一半乘以k。
在将所有内容与-1相乘后,我用heapq实现了它,使其具有一个min堆。
def minStoneSum(self, piles: List[int], k: int) -> int:
h = [-el for el in piles]
heapq.heapify(h)
for i in range(k):
# version 1
newmax = min(h) >> 1
heapq.heapreplace(h, newmax)
# vers
我想得到5个最接近100的整数,比如100,99,98,101,102。我使用了以下方法,但没有得到想要的结果。
myList = [95,96,97,98,99,100,101,102,103,104,105]
for i in myList:
print(min(myList, key=lambda x:abs(x-100)))
myList.remove(i)
输出:
100
100
100
100
100
100
然后我这样做了:
myList = [95,96,97,98,99,100,101,102,103,104,105]
for i in myList:
我有一个有很多文件的目录,大概是50k。我想选择n最小的文件。
import os
def main():
listfile = os.listdir("../../folder")
for singlefile in listfile:
print singlefile
不幸的是,有了这段代码,我将全部选择它们。
我是python的新手,所以我尝试用python编写字典的前50个元素。我有一个字典,它是按值降序排序的。
k=0
l=0
for k in len(dict_d):
l+=1
if l<51:
print dict
举个小例子:
dict_d={'m':'3','k':'4','g':'7','d':'9'}
取新字典中的前3个元素:
new_dict={'m':'3','k'
在python中,是否有任何算法来查找未排序数组中k个最小数的索引?我知道如何使用numpy模块来实现这一点,但我并不是在寻找它。我立即想到的一个方向是,它必须与排序算法有关。因此,假设我有一个algo来使用冒泡排序对python中的数组进行排序:
def bubbleSort(arr):
n = len(arr)
# Traverse through all array elements
for i in range(n):
for j in range(0, n-i-1):
# Swap if the element found is greater
我正在执行一个命令,将最老文件的x数(FIFO)移到目录中,最好是将"find"结果输送到"ls"中,还是只使用"ls“。请建议一下。
ls -ltr `/bin/find ${in}/* -prune -name "*.txt" -type f` | head -10 |
while read -r infile ; do
-move the file
done
或者我应该只使用ls.,我使用find的原因是:我读到了一些在线内容,在编写脚本时应该避免使用ls。但是在我的