Python min () явно не принимает список целых - PullRequest
2 голосов
/ 07 апреля 2011
def minmax (actual, min, max):
    print 'actual', actual, type(actual)
    print 'min', min, type(min)
    print 'max', max, type(max)
    if actual:
        if min(actual) < min:
            min = min(actual1)
        if max(actual) > max:
            max = max(actual1)
    return min, max

Интересно, почему этот код выдает следующую ошибку? (Я использую Python 2.6.1 на Mac)

actual [572, 2, 1] <type 'list'>
min 0 <type 'int'>
max 0 <type 'int'>
Traceback (most recent call last):
  File "./bin/helixCSV.py", line 706, in <module>
    main()
  File "./bin/helixCSV.py", line 695, in main
    create_final_results(final_result_path, seq_list, hl_fq_list, hl_no_list, strand_dist_list, helix_length_list, linker_occup_list, meta_list, HELIXDEF)
  File "./bin/helixCSV.py", line 335, in create_final_results
    result_dict[def_key]['5prime']['dist_min'], result_dict[def_key]['5prime']['dist_max'] = minmax(strand_dist_list[seq_no][def_key]['us'], result_dict[def_key]['5prime']['dist_min'], result_dict[def_key]['5prime']['dist_max'])
  File "./bin/helixCSV.py", line 299, in minmax
    if min(actual) < min:
TypeError: 'int' object is not callable

Приветствие Simon

Ответы [ 2 ]

12 голосов
/ 07 апреля 2011

Вы переопределяете функцию min() своим аргументом min типа int, поэтому.Переименуйте его в другое.

def minmax (actual, min, max):
    print 'actual', actual, type(actual)
    print 'min', min, type(min)
    print 'max', max, type(max)
    if actual:
        if min(actual) < min:      #<- min(actual): python tries calling min(),
            min = min(actual1)     #   min is int,
        if max(actual) > max:      #   -> TypeError: 'int' object is not callable
            max = max(actual1)
    return min, max
11 голосов
/ 07 апреля 2011

Символ min не может означать две вещи (глобальная встроенная функция и ваша локальная переменная) одновременно.

...