Вход
list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
n = 3
И ожидаемый результат
[1, 4, 7, 2, 5, 8, 3, 6, 9]
Я хочу организовать list1
на основе n
.
3 ответа
list1 = [1,2,3,4,5,6,7,8,9]
n = 3
m = len(list1)
list2 = [list1[x%(m-1)] for x in range(0, n*(m-1), n)]
list2.append(list1[-1])
print list2
% является оператором по модулю. В основном оператор range выполняет итерацию от 0 до 3 раз больше длины списка. Оператор по модулю обрезает итерацию до нужного числа в пределах длины списка. К сожалению, последняя запись списка не может быть достигнута с помощью этого метода, так как x% (m-1) будет равен нулю. Поэтому последняя запись должна рассматриваться отдельно.
Использовать zip()
в этом случае?
>>> [list1[i:i+n] for i in range(0, len(list1), n)]
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> list(zip(*[list1[i:i+n] for i in range(0, len(list1), n)]))
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
>>>
Что о:
list1 = [1,2,3,4,5,6,7,8,9]
n = 3
res = []
for i in range(n):
res += list1[i::n]
print(res)
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.