경고입니다.이 코드는 추악합니다. 나는 이것을하는 더 좋은 방법이 있다는 것을 알고 있습니다. 그러나 이것은 단지 운동입니다.Python에서 중첩 된 함수 호출 수 제한
나는 파이썬의 기능 프로그래밍면 주위에 파고 있어요,하지만 난 시도하고 둥지 기능의 수를 호출 할 때 나는 오류가 발생 유지 :
LEN = 4
def calcentropy(i):
entropy[i] = -1 * reduce(lambda x,y: x+y, map(lambda x: x*np.log2(x), map(lambda x: x * (float(1)/float(NUM)), map(count, range(0,LEN)))))
map(calcentropy, range(0,LEN))
나는 오류 메시지가 나는이 없다는 얻을 유형 들간의 불일치;) (떠 마지막 호출 없음 범위는 없습니다 : 형식 오류를 : 지원되지 않는 피연산자 유형 (들) *에 대한 'NoneType'와 '부동'
을 나는 같은 것을 할 때 :
LEN = 4
def calcFreqs(i): do stuff to freqs
map(calcFreqs, range(0, LEN)
def calcentropy(i):
entropy[i] = -1 * reduce(lambda x,y: x+y, map(lambda x: x*np.log2(x), map(lambda x: x * (float(1)/float(NUM)), freqs))))
map(calcentropy, range(0,LEN))
내가 돈을 ' 어떤 문제가 있습니다.
저는 LEN이 더 이상 range() 호출 범위에 없다고 생각합니다. 이 문제를 해결할 수있는 방법이 있습니까? 아니면 일종의 제한을 초과 했습니까? 그렇다면 무엇입니까? 충분한 코드를 추가하지 죄송합니다
, 내 실수 :
import numpy as np
LEN = 4
freqs = np.zeros(4 * LEN, dtype = np.float64)
sites = np.array([0,1,2,3,0,1,2,3,0,1,2,3], dtype = np.int8)
A = np.int8(0)
C = np.int8(1)
G = np.int8(2)
T = np.int8(3)
def count(i):
freqs[i * LEN + A] = E + reduce(lambda x,y:x+y, map(lambda x: 1 if x==A else 0, sites[i::LEN]))
freqs[i * LEN + C] = E + reduce(lambda x,y:x+y, map(lambda x: 1 if x==A else 0, sites[i::LEN]))
freqs[i * LEN + G] = E + reduce(lambda x,y:x+y, map(lambda x: 1 if x==A else 0, sites[i::LEN]))
freqs[i * LEN + T] = E + reduce(lambda x,y:x+y, map(lambda x: 1 if x==A else 0, sites[i::LEN]))
entropy = np.zeros(LEN, dtype = np.float64)
def calcentropy(i):
entropy[i] = -1 * reduce(lambda x,y: x+y, map(lambda x: x*np.log2(x), map(lambda x: x * (float(1)/float(NUM)), map(count, range(0,LEN)))))
map(calcentropy, range(0,LEN))
print entropy
info = map(lambda x: 2-x, entropy)
항상 ** exact ** 오류 메시지가 포함됩니다. – jordanm
[최대 재귀 수준?] (http://stackoverflow.com/questions/3323001/maximum-recursion-depth)의 중복 가능성이 있습니다. 정확한 오류 메시지 없이는 말하기가 어렵습니다. –
'count'는 무엇을합니까? –