#python #list
#python #Список
Вопрос:
Я видел этот код в w3resource:
C = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n']
def list_slice(S, step):
return [S[i::step] for i in range(step)]
print(list_slice(C,3))
Вывод : [['a', 'd', 'g', 'j', 'm'], ['b', 'e', 'h', 'k', 'n'], ['c', 'f', 'i', 'l']]
Я попробовал это без понимания списка и функции:
letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n']
step = int(input("Step of every element: "))
for i in range(step):
print(letters[i::step])
Вывод:
['a', 'd', 'g', 'j', 'm']
['b', 'e', 'h', 'k', 'n']
['c', 'f', 'i', 'l']
возможно ли сделать мой вывод таким [['a', 'd', 'g', 'j', 'm'], ['b', 'e', 'h', 'k', 'n'], ['c', 'f', 'i', 'l']]
образом, не используя понимание списка и не создавая другую переменную с пустым списком?
Комментарии:
1. Нет, это невозможно. вы должны сохранить значение в переменной.
Ответ №1:
это не решение для понимания списка, но поскольку вы хотите, чтобы элемент, имеющий определенное расстояние / шаг в списке, находился в том же списке, тогда вы можете видеть, что эти индексы элементов имеют одно общее свойство, которое имеет одинаковый остаток от значения шага, используя этот подход, вы можете сохранить это значение для этого индексаостаток в паре ключ-значение dict, и в результате вы можете принимать непустые значения.
C = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n']
def func(lis, slic):
res = {i:[] for i in range(len(lis)//slic)}
for i in range(len(lis)):
res[i%slic].append(lis[i])
return [i for i in res.values() if i!=[]]
print(func(C, 3))
# Output :[['a', 'd', 'g', 'j', 'm'], ['b', 'e', 'h', 'k', 'n'], ['c', 'f', 'i', 'l']]
Комментарии:
1. это первый раз, когда я увидел диапазон
//
in. это разделение или нет?2. да, это абсолютное разделение. он разделяет список на
len(list)//step
напоминание, а в них добавляет значения