0
A = [ [1, 2, 3], [4, 5, 6] ]

for row in A:
    s = ' '.join(list(map(str, row)))
    print(s)      # case - 1

   #  1 2 3
   #  4 5 6


for row in A:
    s = ' '.join(list(map(str, row)))    
print(s)      # case -2

   #  4 5 6

Почему если ставлю print() не в теле цикла, то печатает только последний элемент.

D.Ryksd
  • 195
  • Мог бы напечатать только первый элемент так было бы логичнее. Но он по всей видимости начал с последнего. Почему - непонятно. – D.Ryksd Feb 18 '18 at 10:01
  • 2
    Потому вы присваиваете к s все значения которые были в теле A и т.к. значение менялись последнее значение которое было и выводится. Так же про for здесь – Twiss Feb 18 '18 at 10:04

1 Answers1

2

Сравните Ваш код с вот этим:

A = [ [1, 2, 3], [4, 5, 6] ]
s=""
for row in A:
    s = s+" ".join(list(map(str, row)))+"\n"
print(s)
# 1 2 3
# 4 5 6

Надеюсь, разница даст ответ на ваш вопрос.

passant
  • 11,753