-
-
灼きつくす口ずけさへも目をあけてうけたる我をかなしみ給え
施術されつつ麻酔が誘いゆく過去に倖せなりし我が裸身見ゆ
遺産なき母が唯一のものとして残しゆく「死」を子等は受けとれ
(詩の荒野より・清水昶・小沢書店中条ふみ子歌) 20140302
-
-
8章 コレクション :リスト セット
リストLists 順序を持ち一覧表を作る リストは格納するオブジェクトの型を定義しなくていい。 リストは要素elementの順序づけられたセットで、それぞれの値はインデクス index. によって特定化される。。リストの要素は、いかなるタイプでも構成できる。listにlistを格納できる。多次元リスト。 リストはシークエンス sequences.と呼ばれる。 >>> 受験科目=["法人税","所得税","相続税","簿記論","財務諸表"] >>> 受験科目 ['法人税', '所得税', '相続税', '簿記論', '財務諸表'] >>> 8.1 リスト List values
リストの作成法。要素 elements をスクエア square ブラケットbrackets [ ]で囲む。 [10000, 20000, 30000] 整数リスト ["消費税", "法人税", "所得税"] 文字列リスト 異なる型のリストの要素,文字列 string, 浮動小数 float,整数 integer, で構成することができる 。 ["確定申告", 3,015, ["税務署”, 20]] ["税務署”, 20]はネストと呼ばれる。 8.2要素の検索 Accessing elements
リストの要素検索方法は文字列の文字の検索と同じ仕組。式のブラケットの中の数値が索引index(シーケンス番号)となる。索引は0から始まる。 >>> 相続人=["配偶者山田花子","長男山田一郎","次男山田次郎","長女山田春子"] >>> 相続人[0] '配偶者山田花子' >>> 相続人[1] '長男山田一郎' >>> 相続人[2] '次男山田次郎' >>> 相続人[3] '長女山田春子相続人
リストの要素elementは変更できる。mutable
8.3リストの長さ List length
相続人[-1]はリスト要素の最終要素、リスト要素 相続人[-2]は最終から2番目の要素、 相続人[-3]は最終から3番目の要素、相続人[-4]は存在しない。
-
>>> 相続人=["配偶者","子","3"] >>> 相続人[-1] '3' >>> 相続人[-2] '子' >>> 相続人[-3] '配偶者' >>> 相続人[-4] Traceback (most recent call last): File "<pyshell#4>", line 1, in <module> 相続人[-4] IndexError: list index out of range >>>
-
-
リスト検索list indexにループ変数 loop variable を使うことがある。
-
>>> i =0 >>> m=["紅羊", "翠羊", "輝草", "桂華","碩山"] >>> while i < 5: print(m[i]) i=i+1
-
-
while loop は0から4へ進み. ループ変数iがが 5のとき条件 condition不一致となりループは終了する。
len関数はリストの長さ lengthを返す。 この値を使用すると、リストサイズの変更時にプログラムの変更なしで、有効に作用する。: m = ["紅羊", "翠羊", "輝草", "桂華","碩山"] i = 0 while i < len(m): print m[i] i = i + 1
8.4リスト メンバーシップ in List membership
in 文は論理演算子 でシークエンス sequence. の中の存在を確認する。 >>> m = ["紅羊", "翠羊", "輝草", "桂華","碩山"] >>> ’土牛’ in m False >>> ’碩山’ in m True not演算子も in演算子とともに、要素の不存在のテストができる。 >>> ’土牛’ not in m True
8.5リストとforループ Lists and for loops
forループはリストでも使える。
リスト でのforループ作用
forループは、」ループ変数を省略し、英語文風の記述になる。
for m in ["輝草", "桂華","碩山"] : print ("今度の展覧会に出品してください。 " +m + " よろしく!")
-
-
list oeration 演算子 + *
>>> a= [1000,2000,3000] >>> b=[4000,5000,6000] >>> c=a+b >>> print(c) [1000, 2000, 3000, 4000, 5000, 6000] >>> a*3 [1000, 2000, 3000, 1000, 2000, 3000, 1000, 2000, 3000]
-
>>> (a+b)*2 [1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]
>>> b=('044,833,4361') >>> list(b) ['0', '4', '4', ',', '8', '3', '3', ',', '4', '3', '6', '1']
-
-
>>> a = [10000, 20000, 30000] >>> b = [40000, 50000, 60000] >>> c = a + b >>> print c [10000, 20000, 30000, 40000, 50000, 60000] 同様に *演算子リストを与えられた回数だけ繰り返す。 >>> [250000] * 4 [250000, 250000, 250000, 250000] >>> [1000, 2000, 3000] * 3 [1000, 2000, 3000, 1000, 2000, 3000, 1000, 2000, 3000]
参照 パスチュール研究所webより
-
-
You can assemble values of any type into a list:
-
>>> l = ['a', 'b', 1, 'a cat']
-
and access it with indices, exactly as you did with character strings: >>> l[1] 'b'
-
Guess what the '+' operator does with lists?
-
>>> ['a', 1] + [2, 'toto'] ['a', 1, 2, 'toto']
-
... it produces a new list! Now, let's produce a list of numbers:
-
>>> range(10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
-
You can associate this list to a variable named l:
-
-
... How would you produce the list of numbers from 10 to 20?
-
To get help on the range() function, try:
-
-
Now, how do you get the list of even numbers from 0 to 100?
-
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100]
-
And how would you produce the following list: [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
-
-
-
8.7 リストスライスList slices
スライス作用は文字列のときと同様に作用する。
-
スライシング slicing:リストから部分を取り出す仕組み: x(i : j)はx[i]からx[j-1]並べたリストになる。i を省略すると0とみなされ、jを省略すると最後までとみなされる。
-
(2) リストへアクセス スライシング
-
0から始まる各要素のインデックスを使ってアクセスする。
-
-
スライシング slicing:リストから部分を取り出す仕組み: x(i : j)はx[i]からx[j-1]並べたリストになる。i を省略する と 0とみなされ、jを省略すると最後までとみなされる。
例 リストの位置の利用
>>> コード=[101,102,103,111,118] >>> 科目["現金 ","小口現金 ","当座預金 ","普通預金 ","定期預金"] >>> print(コード[0],科目[0],コード[1],科目[1],コード[2],科目[2],コード3],科目[3],コード[4],科目7[4]) 101現金102小口現金103当座預金111普通預金118定期預金
例 リストの位置の利用
>>> foods=["てんぷら","そば","うなぎ","すし"] >>> prices=[1500,800,1800,2000], >>> print(foods[0],prices[0],foods[1],prices[1],foods[2],prices[2], foods[3],prices[3])
てんぷら 1500 そば 800 うなぎ 1800 すし 2000
- (3)リストへの代入
-
>>> foods=["てんぷら","そば","うなぎ","すし"] >>> prices=[1500,800,1800,2000]
すしの値段を2100にする
prices[3]=2100
-
>>> 相続財産 = [’土地’, ’建物’, ’現金預金’, ’生命保険’, ’退職金’, ’家財’] >>>相続財産[1:3] [’建物’, ’現金預金’] >>> 相続財産[:4] [’土地’, ’建物’, ’現金預金’, ’生命保険’] >>>相続財産[3:] [’生命保険’, ’退職金’, ’家財’] >>>相続財産[:] [’土地’, ’建物’, ’現金預金’, ’生命保険’’退職金’, ’家財’]
8.8リストは変更可能 Lists are mutable
文字列と違ってリストは変更可能である。 >>> 相続人 = ["太郎", "次郎", "花子"] >>> 相続人[0] = "一郎" >>> 相続人[-1] = "雪子" >>> print(相続人) [’一郎’, ’次郎’, ’雪子’]
8.9 リスト削除List deletion
>>> 相続人 = [’一郎’, ’次郎’, ’三郎’, ’花子’, ’雪子’, ’春子’] >>> 相続人[1:3] = [’二郎’, ’太郎’] >>> print (相続人) [’一郎’, ’二郎’, ’太郎’, ’三郎’, ’花子’, ’雪子’, ’春子’] 空リストを代入することで、リストの要素を消去できる: >>> 相続人 = [’一郎’, ’二郎’, ’太郎’, ’三郎’, ’花子’, ’雪子’, ’春子’]
>>> 相続人[1:3] = [] >>> print (相続人) [’一郎’, ’三郎’, ’花子’, ’雪子’, ’春子’]
リスト要素の追加
-
>>> list=["雪","月","花"] >>> list[1:1]=["雲","風"] >>> print(list) ['雪', '雲', '風', '月', '花']
>>> list[4:4]=["川"] >>> print(list) ['雪', '雲', '風', '月', '川', '花']
-
del 関数でリストから要素を消去する。 >>> s = [’雪’, ’月’, ’川’] >>> del s[1] >>> s
-
-
スライスをdel関数で使う。
>>> s = [’雪’, ’月’, ’花’, ’雲’, ’風’, ’川’] >>> del s[1:5] >>> print( list)
-
[’雪’, ’川’]
8.10オブジェクトと値 Objects and values
s1 = "相続人" s2 = "相続人" オブジェクト objectは変数が参照するあるもの something 。 オブジェクト object は唯一のアイデンィファイア identifierを有し id関数function.で 見つけることができる。 >>> s2="基礎控除" >>> s1="基礎控除" >>> s1,s2 ('基礎控除', '基礎控除') >>> s1 '基礎控除' >>> s2 '基礎控除' >>> id(s2) 38287984 >>> id(s1) 38288032 s1 と s2は同じ値を持つが同じオブジェクトobject参照していない。s1とs2が参照しているオブジェクトは別物。
8.11 エイリアス別名 Aliasing
変数はオブジェクトを参照する。一つの変数をほかの変数に代入すると両方の変数が同じオブジェクトを参照する。, : >>> s1 = ["雪", "月", "花"] >>> s2 = s1 同じリストが二つの違った名前aとbを持つているので、それをエイリアス化 aliasedという。一つのほうの変更は他のほうに影響する。
>>> s2[0]="風" >>> s1 ['風', '月', '花']
この手法は便利だが、注意を要する使い方である。 . . 8.12 クローンリングリストCloning lists
リストを修正しても、オリジナルのコピーを保存する必要があるときは、リスト自身のコピーを作成する。このプロセスは、クローニング cloningと呼ばれる。リストをクローン化するのにスライス演算子 slice operatorを用いる。 >>> s1 = ["雪", "月”, ”花”] >>> s2 = s1[:] >>> print (s2) ['雪', '月', '花'] s2に対する変更はs1については影響しない。
>>> s2[0]="風" >>> s2 ['風', '月', '花'] >>> s1 ['雪', '月', '花']
-
8.13 リスト仮引数List parameters
リストを仮引数として渡すのは、リストの参照を渡している。リストのコピーを渡しているのではない。 >>> def 先頭(list): return list[0]
-
>>> s1=["雪","月","花"] >>> 先頭(s1) '雪'
-
リストの態様
>>> ["太郎","次郎","花子","梅子"] <文字列のリスト ['太郎', '次郎', '花子', '梅子']
-
>>> ["太郎",18,"次郎",15,"花子",20,"梅子",25] <文字列と数字のリスト >>> ["家族",[”太郎”、”次郎”、”花子”、”梅子”] ] <入れ子・ネスト
>>> 土地=[溝口578,二子765,坂戸345] < 変数を指定し、
データを運ぶコンテナーとして利用する。
-
要素(売上)の合計と平均売上を計算
-
>>> def 半期売上(): 売上= [4500000,3970000,5340000,4900000,5150000,6005000]
-
i=len(売上) print("月数=",i) a=sum(売上) j=a / i print("半期売上合計=",a) print("月平均売上=",j)
-
>>> 半期売上() 月数= 6 半期売上合計= 29865000 月平均売上= 4977500.0
-
リスト内包表記を使う >>>>>> 扶養者数 = [0,1,2,3,4,5] >>> 扶養控除額=[扶養者数*380000 for 扶養者数 in 扶養者数] >>> 扶養控除額 [0, 380000, 760000, 1140000, 1520000, 1900000] リスト関数 、文
del remove append extend sort sorted reverse index insert count max min pop split len cmp map zip in not in extend rindex
>>> list = ["雪", "月", "花"、"雲"、"風"] < listを作成)
>>> del list[1] < delで配列[1]を削除 >>> print(list)
['雪', '花','雲','風'] >>> list1=["一般扶養親族","特定扶養親族","老齢扶養親族"] >>> list2=list1.pop(0) pop(0)で配列を 出す >>> list1 ['特定扶養親族', '老齢扶養親族'] >>> list2 配列から出された pop(0)に保存 されている '一般扶養親族'
-
-
['特定扶養親族', '老齢扶養親族'] >>> list1.remove(list[0]) < list[0]を除去する
-
>>> print (list)
['老齢扶養親族']
2. s.append(x) :リストsの後尾にに新しい要素xを加える。
>>> 家屋=["家屋番号","課税種類","課税床面積","固定資産税評価"] >>> 家屋.append("借地権割合") >>> 家屋
['家屋番号', '課税種類', '課税床面積', '固定資産税評価', '借地権割合']
appendはメソッドなのでドットを使用して 家屋.append("借地権割合")となる
3 s. extend() 新しいリストをsの末尾に追加する
-
>>> 所在=["川崎市高津区","溝口3−8−21"] >>> 家屋=['家屋番号', '課税種類', '課税床面積', '固定資産税評価','借地権割合']
-
>>> 家屋.extend(所在) >>> 家屋
['家屋番号', '課税種類', '課税床面積', '固定資産税評価', '借地権割合', '川崎市高津区', '溝口3−8−21']
例 簡単な単語帳
>>> english=["breakfast","lunch","super"] >>> japanese=["朝食","昼食","夕食"] >>> japanese[english.index("super")] '夕食'
max(),min() 最大値 最小値
-
>>> s=[4,5,6] >>> max(s)
6 >>> min(s)
4
-
+= < リストに追 加
-
>>> l=[9,8,7,6,5] >>> l +='m'
len関数 リストの長さ
>>> 科目=["現金","当座預金","普通預金"] >>> 金額=[120000,500000,200000,1000000]
>>> 科目[len(科目):]=["定期預金"] >>> 科目 ['現金', '当座預金', '普通預金', '定期預金']
>>> 科目[len(科目):]=金額 >>> 科目
['現金', '当座預金', '普通預金', '定期預金', 120000, 500000, 200000,1000000]
zip 二つ以上の引数をとる 引数はリスト タブル 同じ位置にある 要 素をまとめたタブルを返す
>>> 科目=["現金","当座預金","普通預金"]
>>> 金額=[120000,500000,200000,1000000] >>> s=zip(科目,金額) >>> list(s)
[('現金', 120000), ('当座預金', 500000), ('普通預金', 200000), ('定期預金',1000000)]
複数のシーケンス型のオブジェクトを指定し、各オブジェクトの同じイ ンデッ クスの要素をタプル型のオブジェクトとし、タプル型のオブジェ
クトを要素とするリストを作成する方法を確認。組み込み関数の 「zip」を使う。
。
>>> s=["家屋","土地","現金"] >>> q=[1200,12000,120] >>> l=zip(s,q) >>> list(l)
[('家屋', 1200), ('土地', 12000), ('現金', 120)]
map
関数とイテラブルオブジェクトを受取り、イテラブルオブジェクトの各要 素に その関数を適用し、その戻り値を要素とするシ−ケンスを返す
>>> lst = [1,2,3,4,5] >>> def f(x): return x * 2 >>> map(f, lst)
[2, 4, 6, 8, 10]
map(function, sequence)の形式
リスト[2,3,4],リスト[1,2,3]を関数powに順に渡し、順に階乗したリストを作る
>>> a=map(pow,[2,3,4],[1,2,3]) >>> list(a)
[2, 9, 64]
sum リストの各要素を加算。:
>>> lst = [1,2,3,4,5] >>> sum(lst)
15
>>> sum(lst, 10)
25
,
型変換 >>> q={1:5,2:6,3:7} qは辞書型} >>> list(q)
[1, 2, 3] qのキーのリスト
>>> tuple(q)
(1, 2, 3)
で、 ソート機能が無いタプルを一度リストに変換してからソートし、改めてタ プルを作成するといったことが可能。
>>> s=(45,89,123,38,76) >>> list(s) [45, 89, 123, 38, 76] >>> q=list(s) >>> q [45, 89, 123, 38, 76] >>> q.sort() >>> q [38, 45, 76, 89, 123] >>> tuple(q) (38, 45, 76, 89, 123)
-
-
def sonzai(x): a=["材料費","労務費","経費"] if x in a: print ('ok') else : print('no') >>> sonzai(労務費)
ok
>>> sonzai(0)
no >>> 家屋=["家屋番号","課税種類","課税構造","課税床面積","固定資産税評価","借家権割合","持分割合","相続税評価"]
-
>>> for 家屋 in 家屋 : print (家屋 ) 家屋番号 課税種類 課税構造 課税床面積 固定資産税評価 借家権割合 持分割合 相続税評価
-
-
- 例 in
numlist=[2000,3000,4000,5000]
-
for x in numlist: print (x+1)
-
2001 3001 4001 5001
-
-
11
リストの特殊な使い方
lambda構文 簡単に無名関数lambdaで関数オブジェクトを作る
>>> l=[1,2,3,4,5] >>> l [1, 2, 3, 4, 5]
>>> a=map((lambda x: x+1),L) >>> list(a)
[2, 3, 4, 5, 6]
>>> b=map((lambda x,y: x*y),[1,2,3,4],[2,3,4,5]) >>> list(b)
[2, 6, 12, 20]
ソートの仕様
>>> s = ['仏も昔は凡夫なり','我らも終には仏なり','いずれも仏性具せる身を','隔つるのみこそかなしけれ']
>>> s.sort(key=len)
>>> s
['仏も昔は凡夫なり', '我らも終には仏なり', 'いずれも仏性具せる身を', '隔つるのみこそかなしけれ']
>>> s.sort(key=len,reverse=True)
>>> s
['隔つるのみこそかなしけれ', 'いずれも仏性具せる身を', '我らも終には仏なり', '仏も昔は凡夫なり']
>>> s.sort(key=len,reverse=False)
>>> s
['仏も昔は凡夫なり', '我らも終には仏なり', 'いずれも仏性具せる身を', '隔つるのみこそかなしけれ']
>>> s =['春は花','夏ほととぎす','秋は月','冬雪さえて','涼しかりけり']
>>> s.sort(key=len,reverse=True)
>>> s
['夏ほととぎす', '涼しかりけり', '冬雪さえて', '春は花', '秋は月']
>>> s.sort(key=len,reverse=False)
>>> s
['春は花', '秋は月', '冬雪さえて', '夏ほととぎす', '涼しかりけり']
>>> s=[1,2,3] >>> s1=[4,5,6] >>> s==s1
False
>>> s1>s
True
リストの要素の計算例 (a)
>>> 単価=[200,100,300,50,2000] >>> 個数=[10,20,10,50,5]
<インデックスを指定して掛け算 する
>>> 単価[0]*個数[0]+単価[1]*個数[1] 4000
>>> 単価[0]*個数[0]+単価[1]*個数[1]+単価[2]*個数[2]+単価[3]*個 数[3]+単価[4]*個数[4]
19500
>>> def 有価証券移動平均法(): print('単価 数量の空のリストをつくる。') print('空のリストに、insert()関数でデータを入力する。') print('単価と数量の要素どうしを乗じて合計し購入額計を算出 する。') print('数量の要素を合計し数量計を算出する。') print('購入額計を数量計で割って移動平均法単価を算出す る。')
>>> 有価証券移動平均法()
単価 数量の空のリストをつくる。 空のリストに、insert()関数でデータを入力する。 単価と数量の要素どうしを乗じて合計し購入額計を算出する。 数量の要素を合計し数量計を算出する。 購入額計を数量計で割って移動平均法単価を算出する。
>>> 単価=[] >>> 数量=[] >>> 単価.insert(0,200) >>> 単価.insert(1,300) >>> 数量.insert(0,40) >>> 数量.insert(1,10) >>> 購入計=数量[0]*単価[0]+数量[1]*単価[1] >>> 数量計=数量[0]+数量[1] >>> 移動平均単価=購入計/数量計 >>> print(移動平均単価)
220.0
株価の推移をリストにとり、移動平均価格を算定する。
>>> from functools import reduce >>> 株価=[456,463,462,480,456,472,487,456,480] >>> 移動平均株価=reduce(lambda a,b : (a+b)/2, 株価) >>> print(移動平均株価) 473.32421875
株価と購入数量を入力して、金額リストを作り、購入合計を算出する。 def kabu(): 株価=[500,540,560,490,480] 数量=[10,12,15.20,50] 金額=map((lambda x ,y : x * y),株価,数量) print("購入金額リストです。") print(list(金額)) print("購入金額合計です。") print(sum(map((lambda x ,y : x * y),株価,数量)))
>>> kabu() 購入金額リストです。 [5000, 6480, 8512.0, 24500] 購入金額合計です。 44492. 0
230
>>> 名前=['近藤勇','土方歳三','宮本武蔵'] >>> [名前.split() for 名前 in 名前]
[['近藤勇'], ['土方歳三'], ['宮本武蔵']]
。 2 セットとは何か 重複のないリストset型
set型:要素が重複しないリスト 追加削除できる。 順番の概念がない。インデックス操作ができない。
>>> 武将=['信長','秀吉','光秀','光秀'] >>> 武将=set(武将) #重複のない集合を作る >>> 武将 set(['信長', '秀吉', '光秀'])
するには(リストの文法)・・・
]
リストの要素を置き換えるには remove insert メソッド
>>> s =['鈴木太郎','山田二郎','中村三郎','田中四郎','大山五郎']
>>> s.remove('鈴木太郎') >>> s.insert(0,'山本太郎') >>> s
['山本太郎', '山田二郎', '中村三郎', '田中四郎', '大山五郎']
リストを使ってみる
(1).消費税についてリスト作成し、消費税を理解する。
>>> 消費税=['国内取引','輸入取引'] >>> 国内取引=['課税対象','不課税'] >>> 課税対象=['課税','非課税'] >>> 課税=['課税','免税'] >>> 輸入取引=['課税貨物','非課税貨物'] >>> 課税対象=['国内行為','事業行為','対価行為','譲渡貸付役務提 供行為'] >>> 国内行為=['資産譲渡貸付:原則.譲渡貸付資産所在地:例外.特 許権等','役務提供:原則・役務の提供地:例外・運輸 通信国際郵便情報提供','利子対価金銭貸付:行為 者事業所所在地'] >>> 事業行為=['法人:すべての行為','個人:事業行為・事業付随行 為'] >>> 対価行為=['反対給付受領','不課税:贈与・保険金・賠償金・立退 料・配当金・寄付金・祝金・見舞金等・補助金・助成金 等・敷金・保証金等'] >>> みなし譲渡=['個人事業者家事消費','法人役員贈与'] >>> 資産譲渡類似行為=['代物弁済','負担付贈与','現物出資','特定 受益証券等','金銭債権譲受・承継(包括承 継を除く)','不特定多数への送信受信料'] >>> 土地収用法特定収用=['対価保障金']
>>> 輸入取引課税対象=['引取行為;引取・消費等','保税地域;関税 課税保留保管場所','外国貨物;輸入許可前 後の貨物']
>>> 非課税=['土地等の譲渡貸付','有価証券等の譲渡','利子・保証 料・保険料等','郵便切手・印紙・証紙','物品切手等:原始 発行は不課税','行政手数料','外国為替業務','社会保健 医療等:自由診療課税・医薬品販売・医療器具販売課 税','介護保険サービス・社会福祉事業等','助産に係る資 産譲渡等','埋葬料・火葬料','身体障害者物品譲渡、貸付 等','学校教育法学校授業料等','教科用図書譲渡','住宅 貸付'] >>> 土地等の譲渡貸付=['借地権含む','貸付期間1月未満:課税','施 設(駐車場、建物)利用に伴う土地貸付:課 税','土地等に係る役務の提供:課税'] >>> 有価証券等の譲渡=['有価証券等:支払手段:非課税','船荷証 券・ゴルフ場利用株式等:課税','収集品、販 売用支払手段(コイン):課税','有価証券に 係る役務提供:課税']
>>> 住宅貸付=['1月未満:課税','住宅譲渡:課税','住宅貸付共益費: 非課税','社宅貸付:非課税']
>>> 免税=['輸出取引等'] >>> 輸出取引等=['本邦からの輸出資産譲渡・貸付〔輸入手続前譲渡 を含む)','外国貨物〔輸入許可前貨物)譲渡貸 付','国際運輸(日本ー外国)・通信(国際電話)・郵 便等(エアメール)','国際運輸用船舶・航空機の譲 渡貸付一定修理','外国貨物に係る役務提供〔荷役 料・保管料・通関手数料)','非居住者に対する無形 固定資産等の譲渡貸付','非居住者に対する役務 の提供'] >>> 非居住者=['本邦内に住所居所がない自然人','本邦内に主たる 事務所を有しない法人(外国法人本邦支店等は居住 者とみなす'] >>> 一定非居住者提供役務=['課税取引','国内所在資産運送・保 管','国内飲食宿泊','上記準ずるもので 直接便益享受''外国法人から依頼国内 広告宣伝:輸出取引']
(2).リストを使って、雇用保険等を計算する
s:社員名簿 d1社員給与 r1雇用保険率 r2 健康保険率 r3 厚生年 金率
s =['鈴木太郎','山田二郎','中村三郎','田中四郎','大山五郎'] d1=[250000,300000,350000,400000,500000] r1=0.06 r2=0.035 r3=0.062 雇用保険=d1[0]*r1,d1[1]*r1,d1[2]*r1,d1[3]*r1,d1[4]*r1 健康保険=d1[0]*r2,d1[1]*r2,d1[2]*r2,d1[3]*r2,d1[4]*r2 厚生年金=d1[0]*r3,d1[1]*r3,d1[2]*r3,d1[3]*r3,d1[4]*r3 雇用保険合計=0 健康保険合計=0 厚生年金合計=0 for x in 雇用保険: 雇用保険合計=雇用保険合計+x for x in 健康保険: 健康保険合計=健康保険合計+x for x in 厚生年金: 厚生年金合計=厚生年金合計+x print('雇用保険合計=',雇用保険合計) print('健康保険合計=',健康保険合計) print('厚生年金合計',厚生年金合計)
雇用保険合計= 108000.0 健康保険合計= 63000.0 厚生年金合計 111600.0
>>>
>>> a[:]
['spam', 'eggs', 100, 1234]
不変(immutable) な文字列型と違い、リストは個々の要素を変更することができます。
>>>>>> a
['spam', 'eggs', 100, 1234]
>>> a[2] = a[2] + 23
>>> a
['spam', 'eggs', 123, 1234]
スライスに代入することもできます。スライスの代入を行って、リストのサイズを変更したり、完全に消すことさえできます。
>>>>>> # いくつかの項目を置換する:
... a[0:2] = [1, 12]
>>> a
[1, 12, 123, 1234]
>>> # いくつかの項目を除去する:
... a[0:2] = []
>>> a
[123, 1234]
>>> # いくつかの項目を挿入する:
... a[1:1] = ['bletch', 'xyzzy']
>>> a
[123, 'bletch', 'xyzzy', 1234]
>>> # それ自身 (のコピー) を先頭に挿入する
>>> a[:0] = a
>>> a
[123, 'bletch', 'xyzzy', 1234, 123, 'bletch', 'xyzzy', 1234]
>>> # リストをクリアする: 全てのアイテムを空のリストに置換する
>>> a[:] = []
>>> a
[]
組込み関数 len() はリストにも適用できます。
>>>>>> a = ['a', 'b', 'c', 'd']
>>> len(a)
4
リストを入れ子にする (ほかのリストを含むリストを造る) ことも可能です。例えば、
>>>>>> q = [2, 3]
>>> p = [1, q, 4]
>>> len(p)
3
>>> p[1]
[2, 3]
>>> p[1][0]
2
>>> p[1].append('xtra') # 5.1節を参照
>>> p
[1, [2, 3, 'xtra'], 4]
>>> q
[2, 3, 'xtra']
最後の例では、 p[1] と q が実際には同一のオブジェクトを参照していることに注意してください!オブジェクトの意味付け(semantics) については、後ほど触れることにします。
.1. リスト型についてもう少し(原文)
リストデータ型には、他にもいくつかメソッドがあります。リストオブジェクトのすべてのメソッドを以下に示します。
- list.append(x)
-
リストの末尾に要素を一つ追加します。 a[len(a):] = [x] と等価です。
- list.extend(L)
-
指定したリスト中のすべての要素を対象のリストに追加し、リストを拡張します。a[len(a):] = L と等価です。
- list.insert(i, x)
-
指定した位置に要素を挿入します。第 1 引数は、リストのインデクスで、そのインデクスを持つ要素の直前に挿入が行われます。従って、a.insert(0, x) はリストの先頭に挿入を行います。また a.insert(len(a), x) は a.append(x) と等価です。
- list.remove(x)
-
リスト中で、値 x を持つ最初の要素を削除します。該当する項目がなければエラーとなります。
- list.pop([i])
-
リスト中の指定された位置にある要素をリストから削除して、その要素を返します。インデクスが指定されなければ、 a.pop() はリストの末尾の要素を削除して返します。この場合も要素は削除されます。 (メソッドの用法 (signature) で i の両側にある角括弧は、この引数がオプションであることを表しているだけなので、角括弧を入力する必要はありません。この表記法は Python Library Referenceの中で頻繁に見ることになるでしょう。)
- list.index(x)
-
リスト中で、値 x を持つ最初の要素のインデクスを返します。該当する項目がなければエラーとなります。
- list.count(x)
-
リストでの x の出現回数を返します。
- list.sort()
-
リストの項目を、インプレース演算 (in place、元のデータを演算結果で置き換えるやりかた) でソートします。
- list.reverse()
-
リストの要素を、インプレース演算で逆順にします。
以下にリストのメソッドをほぼ全て使った例を示します。
>>>>>> a = [66.25, 333, 333, 1, 1234.5]
>>> print(a.count(333), a.count(66.25), a.count('x'))
2 1 0
>>> a.insert(2, -1)
>>> a.append(333)
>>> a
[66.25, 333, -1, 333, 1, 1234.5, 333]
>>> a.index(333)
1
>>> a.remove(333)
>>> a
[66.25, -1, 333, 1, 1234.5, 333]
>>> a.reverse()
>>> a
[333, 1234.5, 1, 333, -1, 66.25]
。することができるためです。
辞書は順序付けのされていない キー(key): 値(value) のペアの集合であり、キーが (辞書の中で)一意でければならない、と考えるとよいでしょう。波括弧 (brace) のペア: {} は空の辞書を生成します。カンマで区切られた key: value のペアを波括弧ペアの間に入れると、辞書の初期値となる key: valueが追加されます; この表現方法は出力時に辞書が書き出されるのと同じ方法です。
>>>
...
- ホーム
戻る |