用两个不同的条件在python中迭代两个数组

时间:2018-10-22 06:20:30

标签: python arrays

如何在两个不同的条件下迭代两组数组? 我正在使用虹膜数据,并试图对它是杂色还是长春花进行分类。

array = dataframe.values
petalLength = array[50:,2]
petalWidth = array[50:,3]    

我正在尝试迭代两个数组,但没有得到我需要的结果。

def decision(petalLength, petalWidth):
    for x in petalLength:
        for y in petalWidth:
            if x < 4.8 and y < 1.8:
                print("Versicolour")
            else:
                print("Virginica")

例如结果:

petal Length is 4.7 and petal Width is 1.5 the answer should be Versicolour
petal Length is 4.7 and petal width is 1.9 the answer should be Virginica

3 个答案:

答案 0 :(得分:1)

我假设您想要的是成对迭代,通常使用zip

for x, y in zip(petalLength, petalWidth):
    if x < 4.8 and y < 1.8:
        print("Versicolour")
    else:
        print("Virginica")

答案 1 :(得分:0)

当您只想执行一次操作时,您已经嵌套了for循环,可以为您提供N ^ 2个结果。

每个内部循环都运行len(petalLength)次...将每个petalWidth与每个petalLength进行比较,而不是成对进行。

def decision(petalLength, petalWidth):
    for i in range(len(petalLength)):
        if petalLength[i] < 4.8 and petalWidth[i] < 1.8:
            print("Versicolour")
        else:
            print("Virginica")

答案 2 :(得分:0)

除了schwobaseggl的答案,use return instead of print

def decision(petalLength, petalWidth):
    for x, y in zip(petalLength, petalWidth):
        if x < 4.8 and y < 1.8:
            return "Versicolour"
        else:
            return "Virginica"

那么现在:

print(decision(petalLength,petalWidth))

将返回所需的输出,

但是以前,它将输出所需的输出,然后输出另一行具有None

与Aleksei Maide的回答相同。