使用Python识别连续的最大数字

时间:2015-03-16 14:58:51

标签: python

我有三列中的数据如下,我试图识别每行(1,2,3)中最大值的位置,并忽略最大值出现多次的行。我在下面的脚本将识别每行中的最高值,但我无法解决其他两个问题。任何建议将不胜感激!

0   3   3
3   3   3
3   3   3
0   3   3
3   4   3


data = open('file.csv', 'r')

rows = []
for line in data:
    row = [int(each) for each in line.split()]
    rows.append(row)

data.close()

columns = zip(*rows)


for index, column in enumerate(rows):
    print max(column)

2 个答案:

答案 0 :(得分:3)

由于您的所有行都在列表中,因此您可以遍历该列表并使用一些内置函数来查找所需的信息:

gvalues = []
for row in rows:
    highest = max(row)
    tally = row.count(highest)
    position = row.index(highest)

    if tally == 1:
        gvalues.append((highest, position))
    else:
        gvalues.append((None, None))

完成此操作后,您将获得一个列表gvalues,其中包含每行highest value, position的元组。对于None, None以上的多个行,它将包含highest

对于您提供的示例,它将输出[(None, None), (None, None), (None, None), (None, None), (4, 1)]

答案 1 :(得分:0)

您可以使用python' s count返回一个列表,但代码少一些。 OP只询问最高值的索引,如果唯一的话。

    max_index = list()
    for i in a:
        if i.count(max(i))>1:
            max_index.append(None)
        else:
            max_index.append(i.index(max(i)))

此示例返回[None, None, None, None, 1]