推 flarehunter: 首先把變數名稱寫的更清楚一點可能可以找到bug 03/21 12:03
→ flarehunter: 像是if i in n and i in c and i in m 03/21 12:04
→ flarehunter: 就完全不知道是什麼意思 03/21 12:04
好的,抱歉
因為我把每一行分成三個位置 row[1],row[-1],row[2]~[-2]
然後建立三個set,分別是n、c、m
n => row[1],c => row[-1],m => row[2]~row[-2]
然後判斷式則是判斷出現在哪幾個set裡面,像是:
if i in n and i in c and i in m
這邊我想表達的是特定的ID都有出現在這三個set
也有條件是只出現在某兩個或只出現在某一個
推 ccwang002: 如果你有 sample data 我想寫一篇怎麼使用 pdb debug 03/21 13:44
我不是用pdb喔,不過也很希望能看一下
※ 編輯: sariel0322 (182.234.196.206), 03/21/2015 14:43:19
→ ccwang002: pdb 是 Python 內建的 debugger 03/21 16:06
了解,我以為是某資料庫的sample data
※ 編輯: sariel0322 (182.234.196.206), 03/21/2015 16:46:01
※ 編輯: sariel0322 (182.234.196.206), 03/21/2015 17:59:44
→ ccwang002: 我好像懂為什麼會重覆了,你的 if 可能不是 exculsive 03/21 18:06
→ ccwang002: 所以第一個 if 執行完就會再執行下一個 if,就會有兩行 03/21 18:07
→ ccwang002: 可以每個 if 中加個 continue 或用 if ... elif 結構 03/21 18:08
我是有想過會再執行別的if,但是我應該已經用了if 的內容判斷式避免到再做這個動作吧?
因為我所想的狀況是利用這七個判斷式內容條件的不同
每一個ID應該只會對應到一個if 的狀況,但很明顯有些ID對應到兩三個if的狀況
因此我才很疑惑,我這七個的if判斷式應該是互斥的阿....
※ 編輯: sariel0322 (182.234.196.206), 03/21/2015 18:13:42
→ ccwang002: 等等,你把 8 種狀況都寫了我不覺得是 if 的問題 03/21 18:14
→ ccwang002: 感覺是不同 filename 或 row 有重覆的 domain 03/21 18:14
對,這三個n、c、m集合都會有重複的domain沒錯
雖然有不同的filename,但是我在最後都會把這些集合清空
而且我的集合是用set(),if 判斷式的條件也有把這三個集合有重複的ID考慮進去了
而且我感覺是if的問題的原因是我的結果像是 3 domain protein 這一個filename就跑出兩個if 的結果了
※ 編輯: sariel0322 (182.234.196.206), 03/21/2015 18:19:17
→ ccwang002: 你的 domain 判斷在 row 的 for loop 裡喔 03/21 18:22
→ ccwang002: 每讀一行都會把 domain 分類寫出來,這感覺很會重覆 03/21 18:23
這個原因是因為我不是要讀完所有的檔案一次做分析
而是要一個一個讀檔各自做分析,我是希望每讀一個檔案就用裡面的domain做分析一次
然後換下一個檔案時再把全部清空
※ 編輯: sariel0322 (182.234.196.206), 03/21/2015 18:26:48
→ ccwang002: 你是要讀一個檔分析一次而不是讀「一行」分析一次吧? 03/21 18:28
是的,所以是迴圈中出錯誤了嗎?
※ 編輯: sariel0322 (182.234.196.206), 03/21/2015 18:30:02
→ ccwang002: 是的,你要把 for i in domain 移到 csv.reader(f) 外 03/21 18:30
→ ccwang002: 現在流程是:開 csv,讀一行 + 更新 ncm + 判斷 domain 03/21 18:31
→ ccwang002: 你想要的:開 csv,讀一行 + 更新 cnm,讀完判斷 domai 03/21 18:32
→ ccwang002: 簡單來說,for in domain 往外縮排一格,然後要注意 03/21 18:34
好的,我試試看,非常感謝
※ 編輯: sariel0322 (182.234.196.206), 03/21/2015 18:35:05
→ ccwang002: n/m/c.clear()。改成每讀檔的時候 n = set() 重建吧 03/21 18:34
好的,非常感謝
※ 編輯: sariel0322 (182.234.196.206), 03/21/2015 18:44:58
有了,非常感謝,目前只遇到一個新的問題...
只有3 domain protein也是我第一個圖讀的資料是錯誤的,有點奇怪,總之非常感謝你的幫忙
※ 編輯: sariel0322 (182.234.196.206), 03/21/2015 18:47:25
※ 編輯: sariel0322 (182.234.196.206), 03/21/2015 18:48:33