我读到有可能传递一个函数作为参数。但是现在我必须测试一个给定的函数并使用它,我的问题是:我如何给这个函数参数?你知道吗
def bucketMap(key, M):
return key*M
def bucketSort(a, bucketMap, d):
N = len(a)
M = int(N / float(d)) # Anzahl der Buckets festlegen
# M leere Buckets erzeugen
buckets = [[] for k in xrange(M)]
# Daten auf die Buckets verteilen
for k in xrange(len(a)):
index = bucketMap(a[k].key, M) # Bucket-Index berechnen
buckets[index].append(a[k]) # a[k] im passenden Bucket einfuegen
# Daten sortiert wieder in a einfuegen
start, end = 0, len(buckets[0]) # Anfang und Ende des ersten Buckets
for k in xrange(M):
insertionSort(buckets[k]) # Daten innerhalb des Buckets sortieren
a[start:end] = buckets[k] # Daten an der richtigen Position in a einfuegen
start = end # Anfang und Ende fuer das naechste Bucket
end += len(buckets[k]) # aktualisieren
假设我现在有一个数组,里面有我想要用bucketSort排序的数据。 我怎么称呼它? 我不能说:
result = bucketSort(a, bucketMap(), d)
因为如果我在那里调用bucketMap()
,我必须给出参数,但我不想这样做,因为它必须为m
中的每个元素都做bucketMap()
,这是在bucketSort
中完成的。你知道吗
您试图将函数调用的返回值而不是函数本身的返回值传递给
bucketSort
。只是使用顺便说一句,由于
bucketMap
只是将其参数相乘,因此不需要定义新函数;而是使用operator.mul
。你知道吗如果你真的想要一个特定的名字(为了可读性),你可以做一个赋值。你知道吗
相关问题 更多 >
编程相关推荐