- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
size = 3
lines = ["___", "bcd", "___"]
board = [[None]*size]*size
for x in range(0, size):
for y in range(0, size):
if lines[x][y] != '_':
board[x][y] = lines[x][y]
print(board)
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−100
size = 3
lines = ["___", "bcd", "___"]
board = [[None]*size]*size
for x in range(0, size):
for y in range(0, size):
if lines[x][y] != '_':
board[x][y] = lines[x][y]
print(board)
я бы, очевидно, хотел видеть результат:
[[None, None, None], ['b', 'c', 'd'], [None, None, None]]
но питоша выводит:
[['b', 'c', 'd'], ['b', 'c', 'd'], ['b', 'c', 'd']]
Все ок.
Питонское * использует shallow-copy, а не deep-copy. Отсюда и баг.
http://ideone.com/ttSf2c
Вы просто не умеете функционально питонировать: http://ideone.com/kDHksR
ЗЫ. Долго искал повод, где бы можно было использовать эти функции, вот, нашлось.
Ну и в конце концов, Питон можно просто реализовать на Лиспе (кстати, есть даже такой проект), со всем его синтаксисом, так что нет однозначного ответа...
Трупстрауса и Александреску с тобой не согласятся. Да и Томпсон с Ритчи тоже.
А можно и лисп на питоне. Тьюринг полнота такая тьюринг полнота.
Ну, вот так нормально будет, пожалуй, если не задумываться особенно.
http://ideone.com/fB8sGY
Где твоя Команда R?
> Вы просто не умеете функционально питонировать: http://ideone.com/kDHksR
Закоментированным записан вариант @myaut в одну строку.
До этого у меня еще и масштабируемо было, но пришлось кастрировать, чтобы короче вышло.
Кстати, интересный момент, "лишние" скобки убрать-то нельзя :)
for y in range(0, size):
if lines[x][y]
Взять и уебать. На сишку, быстро, решительно!
Надо так: [list(x) for _ in range(n)]