【Python】 自分で作った関数の引数にリストを代入すると、そのオリジナルのリストが改変されてしまうのを防ぐ方法
Q&A
Closed
あまりにも初歩的な質問で申し訳ないのですが…
以下のように種類の違うソートの関数を自分で作って、そのそれぞれの引数にリストを代入して違いを検討したいと思っています。
しかし、一つ目の関数を通った時点でオリジナルのリストがソートされてしまって困っています。
オリジナルのリストはそのままで、関数の結果をそれぞれ取得するにはどこを直せばいいのかご教授いただけるとありがたいです。
def bblsrt(cards):
cards1 = cards
for i in range(len(cards1)):
for j in range(len(cards1) - 1, i, -1):
if cards1[j][1] < cards1[j - 1][1]:
cards1[j], cards1[j - 1] = cards1[j - 1], cards1[j]
return cards1
def slcsrt(cards):
cards2 = cards
for i in range(len(cards2)):
minj = i
for j in range(i, len(cards2)):
if cards2[j][1] < cards2[minj][1]:
minj = j
cards2[i], cards2[minj] = cards2[minj], cards2[i]
return cards2
n = int(input())
C = list(input().split())
print(C)
print(slcsrt(C))
print(C)
print(bblsrt(C))
入力
5
H4 C9 S4 D2 C3
出力
['H4', 'C9', 'S4', 'D2', 'C3']
['D2', 'C3', 'S4', 'H4', 'C9']
['D2', 'C3', 'S4', 'H4', 'C9']
['D2', 'C3', 'S4', 'H4', 'C9']