Помогите постичь, почему программа:
a = [int(i) for i in input().split()] a[a.index(min(a))], a[a.index(max(a))] = a[a.index(max(a))], a[a.index(min(a))] print(' '.join([str(i) for i in a]))
Заранее благодарю.
a = [int(i) for i in input().split()] a[a.index(min(a))], a[a.index(max(a))] = a[a.index(max(a))], a[a.index(min(a))] print(' '.join([str(i) for i in a]))
a = [int(i) for i in input().split()] _min = min(a) _max = max(a) index_min = a.index(_min) index_max = a.index(_max) print(index_min, index_max) a[index_min], a[index_max] = a[index_max], a[index_min] print(' '.join([str(i) for i in a]))
Papa_SvinЗначения запоминать надо, бесспорно, но мне кажется есть какая-то странность, которая зависит от порядка расположения максимума и минимума в исходном списке:
Вероятно потому, что функция index в правой и левой частях конструкции во второй строке возвращает разные значения для min и max.
a=list(map(int, '54321')) #'12345' не меняет местами, а '54321' меняет print(a) a[a.index(min(a))], a[a.index(max(a))] = max(a),min(a) print(a)
ramiДа нет тут никакой странности. После того, как произошло первое присваивание
Значения запоминать надо, бесспорно, но мне кажется есть какая-то странность, которая зависит от порядка расположения максимума и минимума в исходном списке:
a[a.index(min_a)] = max_a
a.index(max_a)
rami
Да, странность случилась со мной, забыл что Питон ленивый, хватает первое подходящее значение: сначала меняет минимум на максимум, а затем берёт первый встречный максимум и меняет его на минимум. Если в исходном списке минимум был раньше максимума, то результат “останется прежним” — минимум заменится на максимум и обратно на минимум. Если максимум был раньше минимума, то результат получается “как надо”.
Хороший пример как не надо работать со списками.
c = b, a #1 a = c[0] #2 b = c[1] #3
mn = 0 mx = 0 a = [int(i) for i in input().split()] mn, mx = a[a.index(min(a))], a[a.index(max(a))] #print(a[a.index(min(a))], a[a.index(max(a))]) #print(mn, mx) a[a.index(min(a))], a[a.index(max(a))] = mx, mn print(' '.join([str(i) for i in a]))
mn = 0 mx = 0 a = [int(i) for i in input().split()] #mn, mx = a[a.index(min(a))], a[a.index(max(a))] mn, mx = min(a), max(a) #print(a[a.index(min(a))], a[a.index(max(a))]) #print(mn, mx) a[a.index(min(a))], a[a.index(max(a))] = mx, mn #print(a[a.index(min(a))], a[a.index(max(a))]) print(' '.join([str(i) for i in a]))