スライス操作は、シーケンス型のオブジェクト(文字型、リスト型、など)の部分を取り出す操作。
部分p = s[開始インデックス : 終了インデックス : 刻み]
s="abcde" として、インデックス値は以下のとおり。
| a | b | c | d | e |
0 1 2 3 4 5 左からの位置
-5 -4 -3 -2 -1 右からの位置
s[3]=s[-2]="d"
s[1:3]=s[-4:-2]=s[1:-2]=s[-4:3]="bc"
s[2:]=s[-3:]="cde"
s[:2]=s[:-3]="ab"
s[:] = "abcde"
配列L=["a", "b", "c", "d", "d"] でも、同様。
L[2:]=L[-3:]=["c", "d", "e"] など。
2010年12月24日金曜日
2010年12月21日火曜日
python:listオブジェクト(基本)
リストの基本。
リストの要素は添字で指定可能。
L = ['a', 'b' ,'c'] の場合、
L[0] = 'a'
L[1] = 'b'
L[2] = 'c'
添字を後ろから-1,-2, ...と指定することも可能。
L[-3] = 'a'
L[-2] = 'b'
L[-1] = 'c'
添字の範囲指定も可能。添字のスタートとエンドはコロンで区切る。
L[1: 2] = ['b', 'c']
L[-2: -1] = ['b', 'c']
L[1:-1] = ['b', 'c']
リストの要素はデータ型が混在してもよい。
L=[a, "b", 50]
L[0] 変数aの値(データ型はこれだけではわからない)
L[1] 文字型のb
L[2] 数字型の50
リストの要素は添字で指定可能。
L = ['a', 'b' ,'c'] の場合、
L[0] = 'a'
L[1] = 'b'
L[2] = 'c'
添字を後ろから-1,-2, ...と指定することも可能。
L[-3] = 'a'
L[-2] = 'b'
L[-1] = 'c'
添字の範囲指定も可能。添字のスタートとエンドはコロンで区切る。
L[1: 2] = ['b', 'c']
L[-2: -1] = ['b', 'c']
L[1:-1] = ['b', 'c']
リストの要素はデータ型が混在してもよい。
L=[a, "b", 50]
L[0] 変数aの値(データ型はこれだけではわからない)
L[1] 文字型のb
L[2] 数字型の50
2010年12月20日月曜日
python:listオブジェクト
リストオブジェクト(list)は、複数要素の集まり。要素の変更可能。
L=[] リストのクリア
L=[v,w,...] リストに値v、w、...を設定
L=list(s) シーケンス型→リスト sが文字列なら1文字ずつの要素になる
L=csv.split(",") csv文字列→リスト
len(L) リストの要素数
L.count(v) 要素vの件数
v = L[i] i番目の値の取得(最初の要素は0番目)
i = L.index(v) 値vの最初の要素位置(最初の要素は0番目)
w = L.index(v,i,j) 同上。ただし、wはi番目以上、j番目未満。
L.append(v) 値をリストの最後に追加
L.insert(v,i) 値をi番目の要素として追加
L.pop(i) i番目の要素を削除。i未指定の場合、最後の要素を削除
if v in L: 値vの有無判定
L = L1+L2 リストの結合
L.sort() リストそのものの並び替え。ただし、昇順。
L.sort(key=int) 同上。ただし、値を数値として並び替え
L.sort(reverse=True) 同上。ただし、降順。
L2 = sorted(L1) リストを並び替えてコピー。元のリストL1はソート前と変わらず。
L2 = sorted(set(L1)) リストを重複削除して並び替え。
L1 = L2 リストのポインターのコピー。この操作後にL1を変更するとL2も変わる。
L1 = L2[:] リストの値のコピー。この操作後にL1を変更してもL2は変わらない。
L=[] リストのクリア
L=[v,w,...] リストに値v、w、...を設定
L=list(s) シーケンス型→リスト sが文字列なら1文字ずつの要素になる
L=csv.split(",") csv文字列→リスト
len(L) リストの要素数
L.count(v) 要素vの件数
v = L[i] i番目の値の取得(最初の要素は0番目)
i = L.index(v) 値vの最初の要素位置(最初の要素は0番目)
w = L.index(v,i,j) 同上。ただし、wはi番目以上、j番目未満。
L.append(v) 値をリストの最後に追加
L.insert(v,i) 値をi番目の要素として追加
L.pop(i) i番目の要素を削除。i未指定の場合、最後の要素を削除
if v in L: 値vの有無判定
L = L1+L2 リストの結合
L.sort() リストそのものの並び替え。ただし、昇順。
L.sort(key=int) 同上。ただし、値を数値として並び替え
L.sort(reverse=True) 同上。ただし、降順。
L2 = sorted(L1) リストを並び替えてコピー。元のリストL1はソート前と変わらず。
L2 = sorted(set(L1)) リストを重複削除して並び替え。
L1 = L2 リストのポインターのコピー。この操作後にL1を変更するとL2も変わる。
L1 = L2[:] リストの値のコピー。この操作後にL1を変更してもL2は変わらない。
2010年12月16日木曜日
python:ファイル名の接頭語、接尾語チェック
# -*- coding: shift_jis -*-
#
import os,sys
def PreSufChk(sIn, sPre="", sSuf=""):
"""ファイルの接頭語と接尾語のチェック
Args:
sIn: 入力ファイル
sPre: 接頭語(prefix)
sSuf: 接尾語(suffix)
Returns:
接頭語、接尾語が一致するか(bool)
"""
return ((sIn.upper().startswith(sPre.upper())) \
and (sIn.upper().endswith(sSuf.upper())))
def main():
sIn="abc.txt"
print PreSufChk(sIn, "a", "txt") #True
print PreSufChk(sIn, "b", "txt") #False
print PreSufChk(sIn, "a", "csv") #False
raw_input()
return True
if __name__=="__main__": main()
-----
・文字列.upper() 大文字に変換する。小文字に変換は.lower()
上記例では、引数の大文字小文字に関わらず、同じ値として扱う。
・a.startswith(sPre) aにsPreが前方一致したらTrue
a.endswith(sSuf) aにsSufが後方一致したらTrue
・\ は、1つの文が複数行にまたがるときの継続行の意味。
#
import os,sys
def PreSufChk(sIn, sPre="", sSuf=""):
"""ファイルの接頭語と接尾語のチェック
Args:
sIn: 入力ファイル
sPre: 接頭語(prefix)
sSuf: 接尾語(suffix)
Returns:
接頭語、接尾語が一致するか(bool)
"""
return ((sIn.upper().startswith(sPre.upper())) \
and (sIn.upper().endswith(sSuf.upper())))
def main():
sIn="abc.txt"
print PreSufChk(sIn, "a", "txt") #True
print PreSufChk(sIn, "b", "txt") #False
print PreSufChk(sIn, "a", "csv") #False
raw_input()
return True
if __name__=="__main__": main()
-----
・文字列.upper() 大文字に変換する。小文字に変換は.lower()
上記例では、引数の大文字小文字に関わらず、同じ値として扱う。
・a.startswith(sPre) aにsPreが前方一致したらTrue
a.endswith(sSuf) aにsSufが後方一致したらTrue
・\ は、1つの文が複数行にまたがるときの継続行の意味。
2010年12月11日土曜日
町字の表記(2)
先走って 「大字なし地域」 を抜かしてしまった。
0.町字が0段階
例)長野県 南箕輪村役場
長野県上伊那郡南箕輪村 4825-1
「大字」が無い地域が全国で100ヶ所ほど存在する。
2000年頃には150ヶ所以上あったが、平成の大合併でだいぶ減った。
大字なし地域の歴史的な経緯の概要は以下のとおり。
1973年(明治6年)の地租改正で課税対象が収穫物から土地になり、土地に徴税用の管理記号が必要になった。
そして、「○○村 123番地」などという「町村名+番地」という表記になり、住所表記に流用されることになる。(市区町村がまだ法制化される前で、この時点でまだ現在の「市」は無い)
この当時70,000以上あった村は現在の大字ほどの領域。
その後、市区町村合併があり、この地租改正時の村はその多くが大字になり、大字名などの地域名として新設、分割、消滅、再使用などを複雑に繰り返し現在に至る。
では、以下の場合はどうなるか?
(1)地租改正当時以降、市区町村合併を一度もせず、町字名の整理などをしていない。
(2)市区町村合併しても「合併後町村名+番地」の表記を続ける。
それが現在の「大字なし地域」だ。
ちなみに例で挙げた南箕輪村は1875年(明治8年)に発足してから一度も市区町村合併をしていない。
今日はこのあたりで。
0.町字が0段階
例)長野県 南箕輪村役場
長野県上伊那郡南箕輪村 4825-1
「大字」が無い地域が全国で100ヶ所ほど存在する。
2000年頃には150ヶ所以上あったが、平成の大合併でだいぶ減った。
大字なし地域の歴史的な経緯の概要は以下のとおり。
1973年(明治6年)の地租改正で課税対象が収穫物から土地になり、土地に徴税用の管理記号が必要になった。
そして、「○○村 123番地」などという「町村名+番地」という表記になり、住所表記に流用されることになる。(市区町村がまだ法制化される前で、この時点でまだ現在の「市」は無い)
この当時70,000以上あった村は現在の大字ほどの領域。
その後、市区町村合併があり、この地租改正時の村はその多くが大字になり、大字名などの地域名として新設、分割、消滅、再使用などを複雑に繰り返し現在に至る。
では、以下の場合はどうなるか?
(1)地租改正当時以降、市区町村合併を一度もせず、町字名の整理などをしていない。
(2)市区町村合併しても「合併後町村名+番地」の表記を続ける。
それが現在の「大字なし地域」だ。
ちなみに例で挙げた南箕輪村は1875年(明治8年)に発足してから一度も市区町村合併をしていない。
今日はこのあたりで。
2010年12月10日金曜日
町字の表記(1)
町字とは、住所構造のうち、”市区町村”より後で”番地号”より前の部分、と定義しておく。
表記パターンは一筋縄ではいかない。まず基本形から。
1.町字が1段階
1-1.大字
例)小林市役所
宮崎県小林市 細野 300
1-2.小字
例)福知山市役所
京都府福知山市 字内記 13番地の1
(おまけ)丁目
例)下田市立下田小学校
静岡県下田市 五丁目 3番1号
※これは通常の大字の下の”丁目”ではなく、正しくは”五丁目”という大字である。下田市には、1~6丁目まで揃っている。
2.町字が2段階
2-1.大字+丁目
例)東京都新宿区役所
東京都新宿区 歌舞伎町 1丁目 4番1号
2-2.大字+小字
例)宮城県名取市役所
宮城県名取市 増田 字柳田 80
ここまではよく目にする町字の構造である。
次回、さらなる迷宮へ続く。
表記パターンは一筋縄ではいかない。まず基本形から。
1.町字が1段階
1-1.大字
例)小林市役所
宮崎県小林市 細野 300
1-2.小字
例)福知山市役所
京都府福知山市 字内記 13番地の1
(おまけ)丁目
例)下田市立下田小学校
静岡県下田市 五丁目 3番1号
※これは通常の大字の下の”丁目”ではなく、正しくは”五丁目”という大字である。下田市には、1~6丁目まで揃っている。
2.町字が2段階
2-1.大字+丁目
例)東京都新宿区役所
東京都新宿区 歌舞伎町 1丁目 4番1号
2-2.大字+小字
例)宮城県名取市役所
宮城県名取市 増田 字柳田 80
ここまではよく目にする町字の構造である。
次回、さらなる迷宮へ続く。
2010年12月7日火曜日
なぜ東京特別区には市が付かないのか?
政令指定都市では、都道府県+市+区 という表記だ。
例)
北海道 札幌市 中央区
大阪府 大阪市 中央区
東京特別区では、都道府県+区という表記だ。
例)
東京都 中央区
これでは特別区全体を表す地域呼称が無く、変則的な感じは免れない。
では、なぜ東京特別区には市が付かないのか?
それは、1943年に戦時法制の一環として、旧東京府と旧東京市が合併したため。
東京都制(wikipedia)
現在は1都1道2府43県だが、当時は1道3府43県。
つまり、東京は府であり、区部にも市があり、東京の区は京都大阪の区と同列だった。
例)
東京府 東京市 日本橋区
確かにこれは現在の京都府京都市などと同じ住所表記だ。
この状態から、旧東京府と旧東京市が合併することになり、県レベルの次が区になってしまった。
例)
東京府 東京市 日本橋区と京橋区が合併して、「東京都 中央区」になった。
それにしても、都道府県レベルと市区町村レベルの合併というのは無理やりである。
例)
北海道 札幌市 中央区
大阪府 大阪市 中央区
東京特別区では、都道府県+区という表記だ。
例)
東京都 中央区
これでは特別区全体を表す地域呼称が無く、変則的な感じは免れない。
では、なぜ東京特別区には市が付かないのか?
それは、1943年に戦時法制の一環として、旧東京府と旧東京市が合併したため。
東京都制(wikipedia)
現在は1都1道2府43県だが、当時は1道3府43県。
つまり、東京は府であり、区部にも市があり、東京の区は京都大阪の区と同列だった。
例)
東京府 東京市 日本橋区
確かにこれは現在の京都府京都市などと同じ住所表記だ。
この状態から、旧東京府と旧東京市が合併することになり、県レベルの次が区になってしまった。
例)
東京府 東京市 日本橋区と京橋区が合併して、「東京都 中央区」になった。
それにしても、都道府県レベルと市区町村レベルの合併というのは無理やりである。
登録:
投稿 (Atom)