Python第三課


@[フクロウ]Python第三課今日はPythonの
深いレプリケーション
浅いレプリケーション
浅いレプリケーションは新しいリストを生成し、元のリストのすべての参照を新しいリストにコピーし、スライスは浅いレプリケーションを返します.
浅いレプリケーションでは、古いリストにリストが含まれている場合、新しいリストに古いリストの要素が含まれている場合、古いリストも変更されます.たとえば、次のようになります.
    >>>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[]]