60858


pythonのスライスとソートについて質問です。

パターン1の変数aとパターン2の変数dataで同じ出力が出ると思うのですが、  
出力が意図していないものなので、なぜこのような出力なのかご教授お願いしたいです。

パターン2でスライスしたものを.sort()すると、スライスしたものがソートされておりません。

パターン1

[code]

    data = [6,10,3,4,5,6,7,8]
    a = data[1:8:2]
    a.sort()
    print(a)
    
[/code]

出力

[code]

    [4, 6, 8, 10]
    
[/code]

パターン2

[code]

    data = [6,10,3,4,5,6,7,8]
    data[1:8:2].sort()
    print(data)
    
[/code]

出力

[code]

    [6, 10, 3, 4, 5, 6, 7, 8]
    
[/code]


CC BY-SA 4.0
2019-11-26T07:03:15.550
60851
2019-11-27T13:39:10.077
2019-11-27T01:52:11.263
29536
29536
question
python
pythonのスライスとソートすると意図しない出力が出る


スライス結果のコピーをソートしているからです。

書かれているコード

[code]

    data[1:8:2].sort()
    print(data)
    
[/code]

これは以下と同義です

[code]

    a = data[1:8:2]
    a.sort()
    print(data)
    
[/code]

`data[1:8:2]` はスライス結果を返しますが、 `data` そのものは変更しません。


CC BY-SA 4.0
2019-11-26T08:38:12.020
60858
2019-11-26T08:56:27.977
2019-11-26T08:56:27.977
3060
806
60851
answer


スライスは元のdataとは別の新しいインスタンスになります。  
sort()は新しいインスタンスに作用するため、dataそのものは何も変わりません。


CC BY-SA 4.0
2019-11-26T08:42:15.987
60859
2019-11-27T13:39:10.077
2019-11-27T13:39:10.077
35558
35558
60851
answer