Python For循环未递增

时间:2019-03-05 14:13:53

标签: python python-3.x

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正常增加并产生正确的输出,但是j在三个循环中保持为0,然后跳到3。我不明白这一点。

3 个答案:

答案 0 :(得分:1)

for a in something

a是某物所包含的内容,而不是索引

例如:

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

给予

1
10
9
3

答案 1 :(得分:1)

你要么想要

for i in range(len(malware))

for i, element in enumerate(malware)

此时i是恶意软件的计数和元素。index(i)

在循环中同时需要索引和该索引处的元素时,最后一种方法被认为是最佳实践。

答案 2 :(得分:1)

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)