Python 基礎その5 リスト
メモ。リストいろいろ。
#Test1 numbers=[4,8,15,16,23,42] colors=["red","green","blue"] print(numbers) print(colors) print("-" *5) #Test2 a=10 b=20 c=30 abc=[a,b,c] print(abc) print("-" *5) #Test3 a=10 b=20 c=30 abc=[a,b,c] b=99 #bの値を変更してもリスト内の値は変化しません print(abc) print("-" *5) #Test4 #型は混在できます mixture=[20,30,"dog","cat",True,False] print(mixture) print("-" *5) #Test5 #途中で改行可能 コメントも可能 data=[ 11,22,33,44,55, #コメント1 66,77, #コメント2 88,99,100 ] print(data) print("-" *5) #Test6 #要素を繰り返すリストを作ります nums=[0]*5 print(nums) strs=["xyz"]*5 print(strs) data=[1,2,3] data*=5 print(data) print("-" *5) #Test7 #リストを使う thelist=list(range(-5, 6)) #-5~5までのリスト print(thelist) #偶数のリスト evenlist=list(range(0, 10, 2)) print(evenlist) #奇数のリスト oddlist=list(range(1, 10, 2)) print(oddlist) #3倍のリスト list_x3=list(range(0, 20, 3)) print(list_x3) #文字列をリストに分ける list_happy=list("happy") print(list_happy) #1文字ずつに分割されたリストになります week=list("日月火水木金土") print(week) #空のリストを作る newlist=list() print(newlist) print("-" *5) #リストの参照 colors=["blue","red","green","yellow"] print(colors[0]) #先頭の要素 print(colors[1]) print(colors[2]) print(colors[3]) print(colors[-1]) #末尾の要素 print(colors[-2]) print("-" *5) #多重リスト list_a=[["apple","peach","orange"], ["cabbage","carrot","potato"]] print(list_a[1][0]) #2番目のリストの最初の要素 r101="佐藤" r102="田中" r103="鈴木" r201="青木" r202="広田" r203="野村" floor1=[r101,r102,r103] floor2=[r201,r202,r203] apartment=[floor1,floor2] print(apartment) print(apartment[0][1]) #1番目のリストの2個目を取り出す apartment[1][2]="マイケル" #2番目のリストの3個目の要素を書き換える print(apartment[1]) #リストの末尾に値を追加する data=[] #空のリストを作っておく data.append(10) data.append(20) print(data) data.append(30) print(data) #リストに値を挿入する data=["a","b","c","d","e","f"] print(data) data.insert(3,"new") #インデックス3の位置に"new"という値を挿入する print(data) #リストから要素を削除する #popは削除と同時に削除した要素を返す fruits=["apple","orange","banana","peach"] print("削除前",fruits) delete_dessert=fruits.pop() #末尾の要素を抜き出し、変数に格納 print(delete_dessert) print("削除後",fruits) #指定の位置にある要素を抜き取る fruits=["apple","orange","banana","peach"] print("削除前",fruits) delete_dessert=fruits.pop(0) #先頭の要素を抜き出し、変数に格納 print(delete_dessert) print("削除後",fruits) #リストに削除したい値が含まれていたら削除する colors=["blue","red","green","yellow"] print("削除前",colors) target="yellow" if target in colors: colors.remove(target) print("削除後",colors) #リストに削除したい値が含まれていたら削除する colors=["blue","red","green","yellow","red"] print("削除前",colors) target="red" while target in colors: #targetが含まれている間は繰り返し削除します colors.remove(target) print("削除後",colors) print("-" *5) #空白で区切られている単語をリスト化する message="may the force be with you!" words=message.split() #初期値では空白がセパレータ print(words) #カンマで区切られた単語をリスト化する fruits="apple, orange, banana, peach" fruits_list=fruits.split(",") print(fruits_list) #単語の前後に空白がある['apple', ' orange', ' banana', ' peach'] fruits="apple, orange, banana, peach" fruits_list=fruits.split(", ") #カンマと空白を合わせてセパレータとします print(fruits_list) #['apple', 'orange', 'banana', 'peach'] #事前に空白を取り除いてから分割する replace fruits="apple, orange, banana, peach" fruits=fruits.replace(" ","") #半角スペース削除 fruits_list=fruits.split(",") print(fruits_list) #['apple', 'orange', 'banana', 'peach'] #分割回数を指定する result="23,45,56,87,90,123,231,256,321" result=result.split(",",3) #先頭から3要素のみ分割 print(result) #['23', '45', '56', '87,90,123,231,256,321'] result="23,45,56,87,90,123,231,256,321" result=result.split(",",3)[:3] #先頭から3要素のみ分割した後、その3要素のみ取得 print(result) #['23', '45', '56'] #リスト要素を連結して文字列を作る join members=["Tom","Jerry","Spike"] name_join=" and ".join(members) print(name_join) print("-" *5) #リストをスライスする colors=["blue","red","green","yellow","pink","black","white"] print(colors[:]) #全部 print(colors[3:]) #インデックス3から最後まで print(colors[:3]) #先頭からインデックス2まで print(colors[3:6]) #インデックス3からインデックス5まで data=[10,21,35,49,51,60,77,81,92,100] n=3 #分割する位置 data1=data[:n] #最初からn-1まで data2=data[n:] #nから最後まで print(data1) print(data2) #要素を1個飛ばしで取り出す letters=["a","b","c","d","e","f","g","h","i","j"] print(letters[::2]) #先頭から1個飛ばし ['a', 'c', 'e', 'g', 'i'] print(letters[1::2]) #2個目から1個飛ばし ['b', 'd', 'f', 'h', 'j'] #同じ値か確認する color_a=["green","blue","red"] color_b=["green","blue","red"] color_c=["green","red","blue"] print(color_a == color_b) #True print(color_a == color_c) #False #代入の注意点 メモリの同じ場所を参照している color_a=["green","blue","red"] color_b=color_a #代入する print(color_b) print(color_a == color_b) #True color_a.append("white") print(color_a) print(color_b) #['green', 'blue', 'red', 'white'] color_b側にも white がある #リストの複製 list_mother=[10,20,30,40,50] list_work=list_mother.copy() #リストを複製 copy() print(list_work) #[10, 20, 30, 40, 50] print(list_mother is list_work) #False 値は同じだが別のオブジェクト #スライスで複製する list_mother=[10,20,30,40,50] list_work=list_mother[:] #リストを複製 [:] print(list_work) #[10, 20, 30, 40, 50] print(list_mother is list_work) #False 値は同じだが別のオブジェクト #listで複製する list_mother=[10,20,30,40,50] list_work=list(list_mother) #リストを複製 list() print(list_work) #[10, 20, 30, 40, 50] print(list_mother is list_work) #False 値は同じだが別のオブジェクト #リストをソートする numbers=[15,23,4,42,8,16] numbers.sort() #昇順ソート print(numbers) #[4, 8, 15, 16, 23, 42] numbers.sort(reverse = True) #降順ソート print(numbers) #[42, 23, 16, 15, 8, 4] #ソートした新しいリストを作る numbers=[15,23,4,42,8,16] numbers_ascend=sorted(numbers) #複製して昇順ソート print(numbers_ascend) #[4, 8, 15, 16, 23, 42] print(numbers) #[15, 23, 4, 42, 8, 16] numbers_descend=sorted(numbers,reverse=True) #複製して降順ソート print(numbers_descend) #[42, 23, 16, 15, 8, 4] print(numbers) #[15, 23, 4, 42, 8, 16] #リストを逆順に並べる numbers=[15,23,4,42,8,16] numbers.reverse() #逆順に並び替え print(numbers) #[16, 8, 42, 4, 23, 15] #ソートで使う比較関数を指定する #文字列の長さでソートする words=["chest","wind","holiday","knight","silence","hot"] words.sort(key=len) print(words) #['hot', 'wind', 'chest', 'knight', 'holiday', 'silence'] #英語の大文字、小文字を区別せずにソートする words=["peach","ver3","Python","Pokemon","ver2"] new_words=sorted(words,key=str.lower) print(new_words) #['peach', 'Pokemon', 'Python', 'ver2', 'ver3'] #リストから値を取り出す #全ての要素を順に取り出す names=["鈴木","田中","栗林","山岡"] for who in names: print(who + "さん") print("-" *5) #ループカウンタを付ける names=["鈴木","田中","栗林","山岡"] for i,who in enumerate(names,1): #1からのカウント print(f"{i}:{who}さん") """ 1:鈴木さん 2:田中さん 3:栗林さん 4:山岡さん """ #複数のリストを対象にする name1=["鈴木","田中","赤尾","佐々木","高岡"] name2=["星奈","夕美","恵子","梨花","幸恵"] long_name=[] for n1,n2 in zip(name1,name2): #2つのリストを同時に操作します long_name.append(n1+n2) #名前を連結してリストに追加します print(long_name) #['鈴木星奈', '田中夕美', '赤尾恵子', '佐々木梨花', '高岡幸恵'] #リスト内包表記 nums=[1,2,3,4,5,6] nums_double=[num*2 for num in nums] #numsから取り出した値を2倍したリストを作成 print(nums_double) #[2, 4, 6, 8, 10, 12] #数値を整数に切り捨てたリストを作成 import math num_list=[5.1, 4.3, 8.2, 6.3, 9.6, 10.2, 2.3] result=[math.floor(num) for num in num_list] #floor 切り捨て print(result) #[5, 4, 8, 6, 9, 10, 2] #リスト内包表記でzip()使って2つのリストを連結する name1=["鈴木","田中","赤尾","佐々木","高岡"] name2=["星奈","夕美","恵子","梨花","幸恵"] long_name=[n1+n2 for n1,n2 in zip(name1,name2)] print(long_name) #['鈴木星奈', '田中夕美', '赤尾恵子', '佐々木梨花', '高岡幸恵'] #条件式付きのリスト内包表記 numbers=[2.1, 0.2, 0.3, 1.4, 3.1, 0.3, 1.6] result=[num for num in numbers if 1<=num<2] #1以上2未満の数値を取り出します print(result) #[1.4, 1.6] #数値以外の値を取り除く numbers=[2.1, 4, "", 2.2, "1", 3] #int,floatの数値だけを取り出します numbers=[num for num in numbers if isinstance(num, (int,float))] print(numbers) #[2.1, 4, 2.2, 3] #複数の条件式 numbers=[4, 12, 21, 32, 8, 6, 11, 6] result=[num for num in numbers if num>=5 if num%2==0] #5以上の偶数 print(result) #[12, 32, 8, 6, 6] #for in を複数含める data=[[1,2,3,4], [5,6], [7,8,9]] #for alist in data 外側のネスト #for num in alist 内側のネスト result=[num*2 for alist in data for num in alist] #要素の値を2倍 print(result) #[2, 4, 6, 8, 10, 12, 14, 16, 18] #元のネスティングを保ったままで要素の値を2倍にしたリストを作成 data=[[1,2,3,4], [5,6], [7,8,9]] #for alist in data 外側のネスト #for num in alist 内側のネスト result=[[num*2 for num in alist] for alist in data] #要素の値を2倍 print(result) #[[2, 4, 6, 8], [10, 12], [14, 16, 18]] #リストを検索する #値が含まれているかどうか colors=["blue","red","green","yellow"] print("green" in colors) #True print("black" in colors) #False names=["鈴木裕子","田中里美","桜木啓太"] print("田中" in names) #False name="田中" result=False for item in names: if name in item: #namesから取り出した要素を調べる 文字列なら判定可能 result=True break #見つかったらループを抜ける print(result) #True #みつかった位置を返す id_list=["a","b","c","d"] print(id_list.index("b")) #1 #みつかった個数を返す numbers=[1,3,4,5,5,15,12,57] print(numbers.count(5)) #2 #リストから要素をランダムに取り出す import random fruits=["apple","orange","banana","peach"] dessert=random.choice(fruits) #実行する度にリストから1つ選ばれる print(dessert) #secretsモジュールのchoice()も同じ import secrets dessert=secrets.choice(fruits) #実行する度にリストから1つ選ばれる print(dessert) #合計、最大値、最小値 data=[56,45,83,67,59,41,77] print(sum(data)) #合計 428 print(max(data)) #最大値 83 print(min(data)) #最小値 41