- 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']]
Fai 24.11.2012 21:08 # 0
Все ок.
bormand 24.11.2012 21:28 # +1
Питонское * использует shallow-copy, а не deep-copy. Отсюда и баг.
inkanus-gray 24.11.2012 22:34 # −1
http://ideone.com/ttSf2c
Fai 24.11.2012 22:50 # +1
Вы просто не умеете функционально питонировать: http://ideone.com/kDHksR
guest 24.11.2012 22:53 # 0
Fai 24.11.2012 22:55 # 0
guest 24.11.2012 22:56 # 0
wvxvw 25.11.2012 02:47 # +2
ЗЫ. Долго искал повод, где бы можно было использовать эти функции, вот, нашлось.
Fai 25.11.2012 07:16 # +1
wvxvw 25.11.2012 14:48 # +3
Ну и в конце концов, Питон можно просто реализовать на Лиспе (кстати, есть даже такой проект), со всем его синтаксисом, так что нет однозначного ответа...
LispGovno 25.11.2012 15:09 # 0
Fai 25.11.2012 18:19 # +1
Трупстрауса и Александреску с тобой не согласятся. Да и Томпсон с Ритчи тоже.
LispGovno 25.11.2012 19:06 # 0
bormand 25.11.2012 15:33 # +2
А можно и лисп на питоне. Тьюринг полнота такая тьюринг полнота.
wvxvw 25.11.2012 16:10 # +2
wvxvw 25.11.2012 15:14 # +1
Ну, вот так нормально будет, пожалуй, если не задумываться особенно.
wvxvw 25.11.2012 02:27 # +1
anonimb84a2f6fd141 25.11.2012 00:10 # −2
myaut 26.11.2012 00:47 # 0
http://ideone.com/fB8sGY
LispGovno 26.11.2012 00:53 # 0
Где твоя Команда R?
Fai 26.11.2012 08:34 # 0
> Вы просто не умеете функционально питонировать: http://ideone.com/kDHksR
Закоментированным записан вариант @myaut в одну строку.
До этого у меня еще и масштабируемо было, но пришлось кастрировать, чтобы короче вышло.
Fai 26.11.2012 08:42 # 0
Fai 26.11.2012 08:58 # +2
wvxvw 26.11.2012 11:40 # 0
Кстати, интересный момент, "лишние" скобки убрать-то нельзя :)
anonimb84a2f6fd141 01.04.2013 19:43 # 0
for y in range(0, size):
if lines[x][y]
Взять и уебать. На сишку, быстро, решительно!
anonimb84a2f6fd141 01.04.2013 19:45 # 0
Надо так: [list(x) for _ in range(n)]