Python第三課
@[フクロウ]Python第三課今日はPythonの
深いレプリケーション
浅いレプリケーション
浅いレプリケーションは新しいリストを生成し、元のリストのすべての参照を新しいリストにコピーし、スライスは浅いレプリケーションを返します.
浅いレプリケーションでは、古いリストにリストが含まれている場合、新しいリストに古いリストの要素が含まれている場合、古いリストも変更されます.たとえば、次のようになります.
ただし、次の場合:
総じて、古いリストが浅いコピーの場合、定数などの可変タイプは影響を受けず、可変タイプ(リストなど)は影響を受けます ②深いコピー
深いレプリケーション関数を使用する場合は、まず
import copy
複製関数のフォーマットは次のとおりです.
copy.deepcopy()
ここでは例を用いて説明します.
総じて,深いコピーでは古いリストに影響を及ぼさない.
リストのソートと逆順、乱数
①リストのソート
ソートには昇順と降順が含まれており、key関数でソートルールを規定できます.
昇順のコードは次のとおりです.
リスト名sort(reverse=False)カッコに記入しない場合はデフォルトで昇順
降順のコードは次のとおりです.
リスト名sort(reverse=True)
sort関数は内蔵関数ではなく、コードの前にimport randomを追加する必要があります.
keyについてリストソートルールを規定します.ここでは例を示します.
sort関数は古いリストに影響します
ジルコニア
sorted()は組み込み関数であり、古いリストには影響しません.importを追加する必要はありません.
使用法は次のとおりです.
②リスト逆順
はsort()関数と同じで、reverse()関数は内蔵関数ではありません.コードの前にimport randomを追加する必要があります.
リスト逆シーケンスとは、リストの先頭と末尾が絶えず要素を交換することであり、第1列と最後から第1列の交換に類似し、第2列と最後から第2列の交換である.このように、
ただし、reversedはオブジェクトであり、エレメントに直接アクセスできないエレメントにはリスト()を付ける必要があります.
たとえば、
③乱数
乱数を使用するには、import randomでよく使われる乱数関数を加える必要があります.
random.shuffle(リスト名)random()randrange(start,end,間隔) 生成間隔Xのランダム整数
10個の乱数を生成する場合は、このように書くことができます.
リスト導出式
リストの導出式の構文形式は
[exp for variable in iterable in iterable if condition]
e.g.
ここで、for elem in vecは行、vec[]を巡回します.
for num in elemが遍歴しているのは列、およびvec[]]
深いレプリケーション
浅いレプリケーション
浅いレプリケーションは新しいリストを生成し、元のリストのすべての参照を新しいリストにコピーし、スライスは浅いレプリケーションを返します.
浅いレプリケーションでは、古いリストにリストが含まれている場合、新しいリストに古いリストの要素が含まれている場合、古いリストも変更されます.たとえば、次のようになります.
>>>aList=[3,5,7]
>>>bList=aList[::]
>>>aList==bList # “==”
True
aList is bList # “is”
False
ただし、次の場合:
>>>aList=[3,[5],7]
>>>bList=t=aList[::]
>>>bList[1].append(6) # 1 6
>>>bList
[3,[5,6],7]
>>>aList
[3,[5,6],7]
総じて、古いリストが浅いコピーの場合、定数などの可変タイプは影響を受けず、可変タイプ(リストなど)は影響を受けます ②深いコピー
深いレプリケーション関数を使用する場合は、まず
import copy
複製関数のフォーマットは次のとおりです.
copy.deepcopy()
ここでは例を用いて説明します.
>>>aList=[3,[5],7]
>>>bList=copy.deepcopy(aList)
>>>bList[1].append(6)
>>>bList
[3,[5,6],7]
>>>aList
[3,[5],7]
総じて,深いコピーでは古いリストに影響を及ぼさない.
リストのソートと逆順、乱数
①リストのソート
ソートには昇順と降順が含まれており、key関数でソートルールを規定できます.
昇順のコードは次のとおりです.
リスト名sort(reverse=False)カッコに記入しない場合はデフォルトで昇順
降順のコードは次のとおりです.
リスト名sort(reverse=True)
sort関数は内蔵関数ではなく、コードの前にimport randomを追加する必要があります.
keyについてリストソートルールを規定します.ここでは例を示します.
>>>aList=[17,15,13,11,9,7,6,5,4,3]
>>>aList.sort(key=lambda x:len(str(x)))
#lambda ,
>>>aList
[17,15,13,11,9,7,6,5,4,3]
# ,
sort関数は古いリストに影響します
ジルコニア
sorted()は組み込み関数であり、古いリストには影響しません.importを追加する必要はありません.
使用法は次のとおりです.
>>>aList=[3,4,5,6,7,9,11,13,15,17]
>>>sorted(aList,reverse=True)
[17,15,13,11,9,7,6,5,4,3]
②リスト逆順
はsort()関数と同じで、reverse()関数は内蔵関数ではありません.コードの前にimport randomを追加する必要があります.
リスト逆シーケンスとは、リストの先頭と末尾が絶えず要素を交換することであり、第1列と最後から第1列の交換に類似し、第2列と最後から第2列の交換である.このように、
ただし、reversedはオブジェクトであり、エレメントに直接アクセスできないエレメントにはリスト()を付ける必要があります.
たとえば、
>>>aList=[3,4,5,6,7,9,11,13,15,17]
>>>newList=reversed(aList)
>>>newList
<Listreverseiterator object at 0x000...>
>>>list(newList)
[17,15,13,11,9,7,6,5,4,3]
③乱数
乱数を使用するには、import randomでよく使われる乱数関数を加える必要があります.
random.shuffle(リスト名)random()randrange(start,end,間隔) 生成間隔Xのランダム整数
10個の乱数を生成する場合は、このように書くことができます.
import random
aList=[random.randint(0,100) for i in range(10)]
リスト導出式
リストの導出式の構文形式は
[exp for variable in iterable in iterable if condition]
e.g.
vec=[[1,2,3],[4,5,6],[7,8,9]]
[num for elem in vec for num in elem]
ここで、for elem in vecは行、vec[]を巡回します.
for num in elemが遍歴しているのは列、およびvec[]]