Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 12

Тема: Кручу верчу python задача - помощь нужна

  1. Кручу верчу python задача - помощь нужна

    Эй, народ! Есть задачка на питоне, прям как у Глобуса Бонифация - кручу, верчу, запутать хочу! Надо из массива сделать вращение элементов влево или вправо на любое количество шагов, чтобы результат был реально крут (ха-ха). Подскажите, плиз, как это красиво реализовать? Может, какие-то встроенные методы или прикольные хаки есть? Да, и еще - иногда надо вращать на шаг больше длины массива, как-то это тоже запилить надо. Кто поможет расшевелить эту задачку?



  2. Ждём вас в нашем чате в Телеграмм ==>> @pythoneer_chat

    А ТАКЖЕ: Канал о Python, статьи и книги ==>>
    @pythoneer_ru

  3. Чувак, тут все на самом деле проще, чем кажется. В питоне можно круто использовать slice. Вот примерчик:

    Программный код:
    def rotate_array(arrk):
        
    len(arr)
        
    %= n  # Это чтобы с шагами больше длины массива не было беды
        
    return arr[-k:] + arr[:-k]

    # Пример использования:
    arr = [12345]
    print(
    rotate_array(arr2))  # [4, 5, 1, 2, 3] 
    Вроде просто мясной рецепт, но с беконом - легко и вкусно.

  4. Цитата Сообщение от MoiraMacTaggert
    Чувак, тут все на самом деле проще, чем кажется. В питоне можно круто использовать slice. Вот примерчик:

    Программный код:
    def rotate_array(arrk):
        
    len(arr)
        
    %= n  # Это чтобы с шагами больше длины массива не было беды
        
    return arr[-k:] + arr[:-k]

    # Пример использования:
    arr = [12345]
    print(
    rotate_array(arr2))  # [4, 5, 1, 2, 3] 
    Вроде просто мясной рецепт, но с беконом - легко и вкусно.
    Неплохой варик с slice, но у меня старый питон (2.7). Как к любому реставрантье без стульев, работает не велика. Кто подскажет как изменить?

  5. "Можно сделать вообще без слайсов:
    Программный код:
    def rotate_array(arrkdirection='right'):
        
    len(arr)
        
    %= n  # Чтобы не запутаться в шагах
        
        
    if direction == 'right':
            
    = -k

        
    return arr[k:] + arr[:k]

    # Пример использования
    arr = [12345]
    print(
    rotate_array(arr3'right'))  # [3, 4, 5, 1, 2]
    print(rotate_array(arr2'left'))  # [3, 4, 5, 1, 2] 

  6. Цитата Сообщение от PharaohGuard
    "Можно сделать вообще без слайсов:
    Программный код:
    def rotate_array(arrkdirection='right'):
        
    len(arr)
        
    %= n  # Чтобы не запутаться в шагах
        
        
    if direction == 'right':
            
    = -k

        
    return arr[k:] + arr[:k]

    # Пример использования
    arr = [12345]
    print(
    rotate_array(arr3'right'))  # [3, 4, 5, 1, 2]
    print(rotate_array(arr2'left'))  # [3, 4, 5, 1, 2] 
    Опа, тут и лево/право есть. Может, модификашку заюзать, чтоб крутить в правую сторону - отмаз для минималистов.

  7. Ну че, есть варик через deque из стандартной библиотеки collections. Ловите:
    Программный код:
    from collections import deque

    def rotate_array
    (arrkdirection='right'):
        
    deq deque(arr)
        if 
    direction == 'right':
            
    deq.rotate(k)
        else:
            
    deq.rotate(-k)
        return list(
    deq)

    # Пример использования
    arr = [12345]
    print(
    rotate_array(arr3))  # [3, 4, 5, 1, 2] 
    Демон скорости и универсальности!

  8. Цитата Сообщение от Боец
    Ну че, есть варик через deque из стандартной библиотеки collections. Ловите:
    Программный код:
    from collections import deque

    def rotate_array
    (arrkdirection='right'):
        
    deq deque(arr)
        if 
    direction == 'right':
            
    deq.rotate(k)
        else:
            
    deq.rotate(-k)
        return list(
    deq)

    # Пример использования
    arr = [12345]
    print(
    rotate_array(arr3))  # [3, 4, 5, 1, 2] 
    Демон скорости и универсальности!
    deque вообще вещь! Только library которая не очень модная, но зато рабоомае - В точку! Практическое понимание деки - супер штука.

  9. Если задумываешься над ротацией массива и вбросами, то, может, через numpy попробовать? Вот пример:
    Программный код:
    import numpy as np

    def rotate_array
    (arrk):
        
    arr np.array(arr)
        return 
    np.roll(arrk).tolist()

    # Пример использования
    arr = [12345]
    print(
    rotate_array(arr2))  # [4, 5, 1, 2, 3] 
    Вроде массив чистый на выходе, а смещение штампует как надо.

  10. Цитата Сообщение от Caspian
    Если задумываешься над ротацией массива и вбросами, то, может, через numpy попробовать? Вот пример:
    Программный код:
    import numpy as np

    def rotate_array
    (arrk):
        
    arr np.array(arr)
        return 
    np.roll(arrk).tolist()

    # Пример использования
    arr = [12345]
    print(
    rotate_array(arr2))  # [4, 5, 1, 2, 3] 
    Вроде массив чистый на выходе, а смещение штампует как надо.
    numpy? Элегантно. Но в боевых услгах, даже import весит слишком... но если память побольше пиписьте, то сразу затягивает!

Страница 1 из 2 12 ПоследняяПоследняя