繁体   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