제가리스트 목록 가지고파이썬에서 for 루프를 통해 목록을 전달하는 방법은 무엇입니까?
sample = [['TTTT', 'CCCZ'], ['ATTA', 'CZZC']]
count = [[4,3],[4,2]]
correctionfactor = [[1.33, 1.5],[1.33,2]]
내가 각 자 (PI)의 주파수를 계산을하여 제곱 한 후 합계를 (- 합 그때 헤트 = 1을 계산).
The desired output [[1,2],[1,2]] #NOTE: This is NOT the real values of expected output. I just need the real values to be in this format.
문제점 :이 목록에서 목록 (샘플, 개수)을 전달하여 필요한 값을 추출하는 방법을 모르겠습니다. 이전에이 코드를 사용하여 목록 (예 : ['TACT','TTTT'..]
) 만 전달했습니다.
- 나는 샘플의 각 요소에 대한 인덱스 (즉, 인덱스가
sample[0] = ['TTTT', 'CCCZ']
및sample[1] = ['ATTA', 'CZZC']
이상. 내가 코드에 그것을 통합하는 방법을 잘 오전, 루프에 대한 더 큰를 추가 할 필요가 있다고 생각한다.
** 코드
list_of_hets = []
for idx, element in enumerate(sample):
count_dict = {}
square_dict = {}
for base in list(element):
if base in count_dict:
count_dict[base] += 1
else:
count_dict[base] = 1
for allele in count_dict: #Calculate frequency of every character
square_freq = (count_dict[allele]/count[idx])**2 #Square the frequencies
square_dict[allele] = square_freq
pf = 0.0
for i in square_dict:
pf += square_dict[i] # pf --> pi^2 + pj^2...pn^2 #Sum the frequencies
het = 1-pf
list_of_hets.append(het)
print list_of_hets
"Failed" OUTPUT:
line 70, in <module>
square_freq = (count_dict[allele]/count[idx])**2
TypeError: unsupported operand type(s) for /: 'int' and 'list'er
변경 ** 정확히 ** 무엇을 잘못 :'square_freq = (count_dict [대립 유전자]/카운트 [IDX]) ** 2 '는'TypeError :/int '와'list '에 대해 지원되지 않는 피연산자 유형을 발생시킵니다. 'int'를'list'로 나눌 수 없습니다. 그건 그렇고, 이것은 여러분이 작성한 코드와 일치하지 않습니다. 왜냐하면'counts [idx]'를'float'에 넘겨 줄 때 또 다른'TypeError'를 발생시킬 것입니다. –
subquq, zip의 subr (count_dict [allele], counts)]'와 같이'square_freq = [[n/d는 n, d는 zip (subq, subr)]와 같은 zip 명령을 사용하려고합니다. 하지만 여전히 오류가 있습니다. 다른 제안? – biogeek
@ PM2Ring 수정했습니다. 그것을 지적 해 주셔서 감사합니다 – biogeek