И если вы не можете сделать это с помощью записи массива, есть ли лучший способ сделать это, чем использовать map и join
Ну, коротко (и неправильно :))ответ «это невозможно» - чтобы получить каждый n-й символ каждой строки в массиве, который вы, очевидно, должны повторять (и да, регулярное выражение тоже итерация - скорее всего, менее производительная, чем итерация массива).
Но давайтепредставьте, что у вас есть настоящее приложение, где вы должны выполнять эту операцию очень часто, а список строк огромен (поэтому итерации болезненны).С другой стороны, список строк редко изменяется, и вам почти никогда не нужно возвращать исходные строки.
В этом случае вы можете заимствовать идею хранения столбцов и преобразовывать исходный массив во что-то вроде
transposed_x = ["gyb", "rea", "eln", "ald", "toi", "ewc", "r_o", "__o", "__o", "__t"]
, где каждый n-й элемент является просто конкатенациейn-й символ каждой исходной строки (здесь я заменяю «отсутствующий» символ на _ для ясности).С помощью этой модели данных вы можете выполнить исходную задачу 1) только с помощью записи массива и 2) в O (1).В качестве очевидного компромисса вам придется выполнять итерации для каждой другой операции (выборка исходной строки, добавление / удаление / обновление и т. Д.) ...