[英]How to deal with iteracy in Python
我有這段代碼:
def PCP(seq, feature):
l = []
mean = st.mean(list(feature.values()))
std = np.std(list(feature.values()))
for elem in seq:
for aa in elem:
if aa in feature:
l.append((feature[aa]-mean)/std)
else:
l.append(0)
return l
seq
是一個帶有序列的字符串列表,而feature
是一個以氨基酸為鍵和某些值作為值的字典。 我希望 function 遍歷列表( seq
)中字符串中的每個aa
並獲取字典中對應的值並進行計算。
這是我作為seq
放置的一段數據,以及feature
字典:
['KISKDLSIAVQMMKRIHSLLERYPEIL', 'SGRVEKSPHEQEIKFFAKILLPLINQY', 'IDQLIVFGEQLIQKSEPLDAVLIEDEL', ..], pI= {"K":9.47, "P":6.3, "R":10.76, "T":5.6, "A":6.11, "C":5.02, "D":2.98, "E":3.08, "F":5.91, "G":6.06, "H":7.64......}
也許他們有問題。
當我運行 function 時出現此錯誤:
Traceback (most recent call last)
<ipython-input-13-89a7be7ecda7> in <module>
----> 1 test_hydrofobowosc= PCP(test_data_neg, hydrofobowosc)
<ipython-input-12-2f318f9cb908> in PCP(seq, feature)
14 mean = st.mean(list(feature.values()))
15 std = np.std(list(feature.values()))
---> 16 for elem in seq:
17 for aa in elem:
18 if aa in feature:
TypeError: 'NoneType' object is not iterable
怎么了?
'range' 返回數字列表。
因此“elem”是一個數字。
因此它是不可迭代的。
你是說'for elem in seq'嗎?
這是應該工作的代碼的修改版本:
def PCP(seq, feature):
l = []
mean = st.mean(list(feature.values()))
std = np.std(list(feature.values()))
for elem in seq:
for aa in elem:
if aa in feature:
l.append((feature[aa]-mean)/std)
else:
l.append(0)
return l
我所做的主要更改是:
通過這些更改,代碼應按預期工作,並且 append 計算值到 l 列表中序列中每個氨基酸在特征字典中具有相應值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.