簡體   English   中英

Python For 循環不遞增

[英]Python For loop not incrementing

clean_offset = len(malware)

tuple_clean = []
tuple_malware = []

for i in malware:
    tuple_malware.append([malware.index(i), 0])
    print(malware.index(i))
    print(tuple_malware)
for j in clean:
    tuple_clean.append([(clean_offset + clean.index(j)), 1])
    print(clean.index(j))
    print(tuple_clean)
    import pdb; pdb.set_trace()

training_data_size_mal = 0.8 * len(malware)
training_data_size_clean = 0.8 * len(clean)

i 正常遞增並產生正確的 output 但是 j 在三個循環中保持為 0,然后跳轉到 3。我不明白這一點。

for a in something

一個是什么而不是索引中包含的內容

例如:

for n in [1, 10, 9, 3]:
    print(n)

1
10
9
3

你要么想要

for i in range(len(malware))

要么

for i, element in enumerate(malware)

在這一點上,i是惡意軟件中的計數和元素.index(i)

在循環中同時需要索引和該索引處的元素時,最后一種方法被認為是最佳實踐。

clean.index(j)上存在邏輯錯誤。 Array.index將返回該數組中的第一個匹配索引。 因此,如果有一些相等的變量,將會有一些錯誤

您可以使用以下代碼進行檢查。

malware = [1,2,3,4,5,6,7,8,8,8,8,8,2]
clean = [1,2,3,4,4,4,4,4,4,2,4,4,4,4]

clean_offset = len(malware)

tuple_clean = []
tuple_malware = []

for i in malware:
    tuple_malware.append([malware.index(i), 0])
    print(malware.index(i))
    print(tuple_malware)
for j in clean:
    tuple_clean.append([(clean_offset + clean.index(j)), 1])
    print(clean.index(j))
    print(tuple_clean)

training_data_size_mal = 0.8 * len(malware)
training_data_size_clean = 0.8 * len(clean)

op 已經解決了這個問題,但如果有人想知道或需要一個 TL;Barkin 的評論的 DR,它只是一個小的更正,

代替

for i in malware
for j in clean

for i in range(len(malware))
for j in range(len(clean))

最后刪除.index() function,並放置i和j。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM