0

Python3でリストを逆にするプログラムを書こうとしていました。私が最初に試した:

def reverse(lst):
    """ Reverses lst in place.
    >>> x = [3, 2, 4, 5, 1]
    >>> reverse(x)
    >>> x
    [1, 5, 4, 2, 3]
    """
    n = len(lst)
    for i in range(n//2):
        lst[i], lst[n-i-1] = lst[n-i-1], lst[i]

失敗し、取得した x は元の値でした。ただし、コードをこれに変更すると、次のように機能しました。

def reverse(lst):
    """ Reverses lst in place.
    >>> x = [3, 2, 4, 5, 1]
    >>> reverse(x)
    >>> x
    [1, 5, 4, 2, 3]
    """
    n = len(lst)
    for i in range(n//2):
        temp = lst[i]
        lst[i] = lst[n-i-1]
        lst[n-i-1] = temp
4

1 に答える 1

2

期待どおりに動作します:

>>> def reverse(lst):
...     n = len(lst)
...     for i in range(n//2):
...         lst[i], lst[n-i-1] = lst[n-i-1], lst[i]
...
>>> lst = [1,2,3,4,5]
>>> reverse(lst)
>>> print(lst)
[5, 4, 3, 2, 1]

ところで、なぜあなたは使わないのですlist.reverseか?

>>> lst = [1,2,3]
>>> lst.reverse()
>>> lst
[3, 2, 1]
于 2013-10-09T08:49:36.167 に答える