Почему этот бросок Python ведет себя по-разному для карты и без карты
Почему эти два оператора печати дают разные результаты, когда два приведения от int к строке, кажется, делают то же самое? Что мне не хватает?
доска это список целых чисел
#ex.1
print ' '.join(map(str, board[:3]))
#ex.2
print ' '.join(str(board[:3]))
#out.1
0 1 2
#out.2
[ 0 , 1 , 2 ]
2 ответа
print(" ".join(map(str, board[:3])))
наносит на карту каждый элемент нарезанного board
к буквальному целому числу и соединяет его с пробелами (вероятно, что вы хотите, и что нужно сделать)
print(' '.join(str(board[:3])))
преобразует list
как его представление (с скобками и все), а затем вставляет пробел между каждым символом. Не то, что вы хотите.
Четко посмотрите, что именно происходит в вашем коде:
Первый случай:
In [4]: map(str,boards[:3])
Out[4]: ['0', '1', '2']
In [5]: ''.join(map(str,boards[:3]))
Out[5]: '012'
Конвертировать все элементы в списке в строковый формат и при использовании join
это присоединится к этим элементам.
Второй случай:
In [6]: str(boards[:3])
Out[6]: '[0, 1, 2]'
In [7]: ''.join(str(boards[:3]))
Out[7]: '[0, 1, 2]'
Сначала весь список преобразуется в список, и при использовании соединения со строкой он выдаст то же самое.