我試圖通過一個字符串(不帶空格)讀取實例,其中包含兩個由3個大寫字母(即HHSkSIO)包圍的單個小寫字母。我已經寫了下面的代碼:在for循環中使用嵌套的if語句
def window(fseq, window_size=7):
for i in xrange(len(fseq) - window_size + 1):
yield fseq[i:i+window_size]
for seq in window('asjdjdfkjdhfkdjhsdfkjsdHJJnJSSsdjkdsad', 7):
if seq[0].isupper and seq[1].isupper and seq[2].isupper and seq[3].islower and seq[4].isupper and seq[5].isupper and seq[6].isupper:
print seq
,其中第一功能窗口允許我使用的7滑動窗和第二部分,for語句,檢查每個窗口內的字符是否通過串迭代更高更高更低更高更高更高。當我運行的代碼,它出來有:
asjdjdf
sjdjdfk
jdjdfkj
djdfkjd
jdfkjdh
dfkjdhf
fkjdhfk
kjdhfkd
jdhfkdj
dhfkdjh
hfkdjhs
fkdjhsd
kdjhsdf
djhsdfk
jhsdfkj
hsdfkjs
sdfkjsd
dfkjsdH
fkjsdHJ
kjsdHJJ
jsdHJJn
sdHJJnJ
dHJJnJs
HJJnJsd
JJnJsdj
JnJsdjk
nJsdjkd
Jsdjkds
sdjkdsa
djkdsad
我怎樣才能讓for語句僅打印出一個符合上面的滑動窗口if語句,而不是打印出所有的人? P.S我知道這可能是一個非常笨重的做法,我是一個初學者,而且這是我能想到的唯一的事情!
'序列[0] .isupper',其餘不實際調用的函數。方法對象是「真理」,因此你的條件總是「真」。如果字符串中的所有字符都是較大的,你也可以省去一些麻煩,並使用'str.isupper'返回'True'的事實。 –
啊好的,所以我需要:如果seq [0] == True? – sahwahn
不,您需要調用方法,例如'seq [:3] .isupper()'會測試2個第一個字符是否爲大寫字母。一般來說,你絕對不會在Python中執行'something == True'。只要測試一下'something'。 –