pythonベース---データ型
13132 ワード
基本データ型
データは状態を表すために使われ、異なる状態は異なるデータ型で表される.
type(データ)データ型の表示
id(データ)メモリアドレスの表示
1、数字(int、float、complex)
役割:年齢、等級、給与、×××号、qq号などの数字に関する
a.int(整数)
32ビットマシンでは、整数のビット数は32ビットで、値範囲は-2**31~2*31-1、すなわち-21147483648~2147483647
64ビットシステムでは、整数のビット数は64ビットであり、値範囲は-2**63~2*63-1、すなわち-922337203685475808~922337203685475807である.
long(ロング整数)
C言語と異なり、Pythonの長整数はビット幅を指定していません.すなわち、Pythonは長整数値の大きさを制限していませんが、実際にはマシンメモリが限られているため、私たちが使用している長整数値は無限に大きくはありません.
注意:
1.Python 2から2から整数オーバーフローが発生した場合、Pythonは自動的に整数データを長整数に変換するので、現在は長整数データの後ろにアルファベットLを付けなくても深刻な結果は起こりません
2.Python 3ではlongタイプはなくなり、すべてint
b.浮動小数点数float
c.複数(実部と虚部を含む)
d.進数間の変換
2、文字列
役割:名前、性別、国籍、住所などの説明情報
定義:一重引用符/二重引用符/三重引用符で、一連の文字からなる
pythonでは、引用符を付けた文字は文字列(引用符:一重引用符、二重引用符、三重引用符のいずれも可能)とみなされ、文字列は数学的に演算することもできますが、加算または乗算のみで、文字列の接合は双方とも文字列であり、数字や他のタイプと接合できません.
一般的な操作:
a.空白stripの除去
他の特殊文字も削除できます
b.分割split
カット回数を指定することもできます
c.長さlen
文字列の長さの計算
d.スライス
e.その他の方法
startswith()は括弧で始まる
endswith()は括弧で終わります
replace(古い値、新しい値、置換回数)置換
formatの3つの方法
sdigit()数字か否か判断
find()は、文字が見つからない場合はエラーを報告しない文字の位置(下付き)を検索します.
index()は文字の位置(下付き)を検索し、文字が見つからない場合はエラーを報告します.
count()検索文字の数を統計
デフォルトでは左から右へ検索
rfind()、rindex()右から左へ検索
join()区切り文字の変更
センター()文字中央
ljust()文字左揃え
rjust()文字右揃え
zfill()文字の右揃え(デフォルトの塗りつぶし文字は0)
expandtabs()tabキーのスペース数を指定
lower()文字はすべて小文字になります
upper()文字がすべて大文字に変わります
Capitalize()頭文字大文字
swapcase()大文字と小文字の反転
title()各単語の頭文字大文字
isalnum()判定文字列は数字とアルファベットからなる
isalpha()判断文字列はアルファベットのみからなる
数値タイプの判断
3、ブール値(bool)
主に論理で判断する
2つの値のみ:
True(真)
False(偽)
練習:
判定ブール値
>>>True or Flase and Flase
True
4、リスト
定義:[]内に任意のタイプの値が複数ある場合、使用、分割
my_girl_friends=list(['alex','wupeiqi','yuanhao',4,10,30])
以下のように簡単に書くことができます.
my_girl_friends=['alex','wupeiqi','yuanhao',4,10,30]
複数の値を格納できます.各値は任意のデータ型に対応できます.
names=[‘alex’,’egon’,’lyndon’]
リスト内の要素を取るには、0から下付きで始まる必要があります.
a.索引(下付き)
b.スライス
c.追加
d.削除
pop()インデックスが指定されていない場合は、最後から削除します
remove()値で削除
e.統計長(リスト内の要素の個数を統計する)
f.inメンバー演算
g.挿入
Insert()を指定した位置に挿入する前に
その他の操作:
clear()リストの内容をクリア
copy()リストの内容を新しいリストにコピー
count()統計リスト内の要素の個数
extend()一度に複数の要素を追加
index()表示要素下付き
reverse()反転リスト
sort()小から大へのソート
#キュー:先頭に移動
方法1:
appendを使用して追加し、popを使用して最初から取ります.
方法2:
Insertを使用してエレメントを最初に挿入すると、後に挿入されたエレメントが前に表示され、popを使用してデフォルトで最後のエレメントから取得されます.
#スタック:先頭後出
5、辞書
作用:複数の値を保存して、key-valueアクセス、値を取るスピードは速くて、辞書内のキーの値のペアは無秩序で、下のラベルを使って値を取ることができません
定義:keyは変更不可能なタイプでなければならないし、hash可能なタイプでなければならない.valueは任意のタイプであってもよく、可変なデータ型は辞書のkeyとすることができる.
info={'name':'egon','age':18,'sex':'male'}#本質
info=dict({'name':'egon','age':18,'sex':'male'})
key:valueで値を格納し、複数の値を格納できます.
辞書はkeyでvalueを取ります
可変データ型(またはhash不可データ型と呼ばれる):
id不変
type不変
値が変わった
リストは可変タイプで、数値と文字列は可変タイプです.
a.保管/取出し
b.削除
pop(key,none)はkeyに従って削除し、keyが存在しない場合はnoneを表示し、異常は投げ出さない
その他の方法:
popitem()は、辞書のキー値ペアをランダムに削除します.
keys()は辞書のすべてのkeyを取り出します
values()は辞書のすべてのvalueを取り出します
items()は辞書をリスト形式で印刷し、辞書の要素はリストのメタグループで表されます.
copy()を新しい辞書にコピー
clear()辞書を空にする
fromkeys(keys,value)keysはリスト形式で、リスト内は複数のkeyであり、1つのvalueは複数のkeyに対応する
老字典update(新しい辞書)古い辞書を新しい辞書で更新する
setdefault()1つのkeyリストを使用して複数のvaule値を格納
6、タプル
役割:複数の値を保存し、1つの要素が変更できないリストに相当し、主に読み取りに使用されます.
定義:()を使用して定義し、辞書のkeyとして使用できます.
a.索引
index()下付きスケールによる値
b.長さ
len()計算長さ
count()統計要素の個数
c.スライス
簡単なショッピングカート
商品情報を印刷し、ユーザーが商品名と購入個数を入力すると、商品名、価格、購入個数をショッピングリストに追加し、空またはその他の不正入力を入力するとユーザーに再入力を要求する
7、集合
作用:重量除去、関係演算
定義:異なる要素からなる集合.集合中は無秩序に配列されたhash値(すなわち、集合内の値は可変データ型)のセットであり、集合内の要素は一意であり、辞書のkeyとして使用することができ、集合の目的は異なる値を一緒に保存することであり、異なる集合間で関係演算に使用され、集合の単一の値にこだわる必要はない.
a.メンバー演算
inとnot in
結果はブール値を返します
b.関係演算
&交差
|統合
-差セット
^対称差セット
>=親
<=サブセット
親セット、子セットはブール値を返します.
c.増加/削除
add()追加要素(可変タイプでなければなりません)
pop()要素の削除(ランダム削除)
remove()要素を削除(要素名を指定し、要素が存在しないとエラーが発生します)
discard()削除要素(要素名を指定し、要素が存在しない場合はエラーを報告しません)
d.方法
さまざまなコレクションを表すには、メソッドを使用します.
intersection交差
ユニオンへいれつ
ディファレンス差セット
symmetric_difference対称差セット
まとめ:
スカラー/原子タイプ:数値、文字列コンテナタイプ:リスト、メタグループ、ディクショナリ可変可変可変可変可変:リスト、ディクショナリ可変:数値、文字列、メタグループアクセス方式別ダイレクトアクセス:数値インデックスアクセス(シーケンスタイプ):文字列、リスト、メタグループkeyアクセス(マッピングタイプ)辞書
データは状態を表すために使われ、異なる状態は異なるデータ型で表される.
type(データ)データ型の表示
id(データ)メモリアドレスの表示
1、数字(int、float、complex)
役割:年齢、等級、給与、×××号、qq号などの数字に関する
a.int(整数)
age=10 #age=int(10)
print(type(age))
:
32ビットマシンでは、整数のビット数は32ビットで、値範囲は-2**31~2*31-1、すなわち-21147483648~2147483647
64ビットシステムでは、整数のビット数は64ビットであり、値範囲は-2**63~2*63-1、すなわち-922337203685475808~922337203685475807である.
long(ロング整数)
C言語と異なり、Pythonの長整数はビット幅を指定していません.すなわち、Pythonは長整数値の大きさを制限していませんが、実際にはマシンメモリが限られているため、私たちが使用している長整数値は無限に大きくはありません.
注意:
1.Python 2から2から整数オーバーフローが発生した場合、Pythonは自動的に整数データを長整数に変換するので、現在は長整数データの後ろにアルファベットLを付けなくても深刻な結果は起こりません
2.Python 3ではlongタイプはなくなり、すべてint
b.浮動小数点数float
salary=3000.3 #salary=float(3000.3)
print(type(salary))
:
c.複数(実部と虚部を含む)
x=1-2j
print(x.real) #real
print(x.imag) #imag :
1.0
-2.0
d.進数間の変換
age=10 #age=int(10)
print(bin(age)) #10->2
#1010 1*(2**3)+1*2=10
print(oct(age)) #10->8
print(hex(age)) #10->16
:
0b1010
0o12
0xa
2、文字列
役割:名前、性別、国籍、住所などの説明情報
定義:一重引用符/二重引用符/三重引用符で、一連の文字からなる
pythonでは、引用符を付けた文字は文字列(引用符:一重引用符、二重引用符、三重引用符のいずれも可能)とみなされ、文字列は数学的に演算することもできますが、加算または乗算のみで、文字列の接合は双方とも文字列であり、数字や他のタイプと接合できません.
一般的な操作:
a.空白stripの除去
name=input('username: ').strip()
print(name)
name=input('username: ')
print(name.strip())
他の特殊文字も削除できます
name='***egon********'
print(name.strip('*'))
print(name.lstrip('*')) #
print(name.rstrip('*')) #
b.分割split
user_info='root:x:0:0::/root:/bin/bash'
print(user_info.split(':')[5]) # : , 6
カット回数を指定することもできます
cmd_info='get|a.txt|333333333' # get
print(cmd_info.split('|')[0])
print(cmd_info.split('|',1)[0] # 1
c.長さlen
文字列の長さの計算
name='egon'
# print(name.__len__())
print(len(name)) #name.__len__()
d.スライス
name='hello world'
print(name[1])
print(name[2])
print(name[3])
print(name[1:7:2]) # , 2-6 , 2
e.その他の方法
startswith()は括弧で始まる
endswith()は括弧で終わります
name='ab_cd'
print(name.endswith('cd'))
print(name.startswith('ab')) :( )
True
True
replace(古い値、新しい値、置換回数)置換
name='tom say :i have one tesla,my name is tom'
print(name.replace('tom','john',1)) :
john say:i have one tesla,my name is alex
formatの3つの方法
print('{} {} {}'.format('egon',18,'male'))
print('{0} {1} {0}'.format('egon',18,'male'))
print('NAME:{name} AGE:{age} SEX:{sex}'.format(age=18,sex='male',name='egon'))
sdigit()数字か否か判断
num='123'
print(num.isdigit())
:( )
True
#
oldboy_age=73
while True:
age=input('>>: ').strip() #
if len(age) == 0:continue
if age.isdigit():
age=int(age)
print(age,type(age))
find()は、文字が見つからない場合はエラーを報告しない文字の位置(下付き)を検索します.
index()は文字の位置(下付き)を検索し、文字が見つからない場合はエラーを報告します.
count()検索文字の数を統計
デフォルトでは左から右へ検索
rfind()、rindex()右から左へ検索
name='egon hello'
print(name.find('o'))
print(name.find('x'))
print(name.find('o',3,6)) # 4 6
print(name.index('o'))
print(name.index('x'))
print(name.count('o',1,3)) # ,
join()区切り文字の変更
l=['egon','say','hello','world'] #
print(':'.join(l)) :
egon:say:hello:world
センター()文字中央
ljust()文字左揃え
rjust()文字右揃え
zfill()文字の右揃え(デフォルトの塗りつぶし文字は0)
name='egon'
print(name.center(30,'*')) # 30, *
print(name.ljust(30,'*'))
print(name.rjust(30,'*'))
print(name.zfill(30)) # 0 :
*************egon*************
egon**************************
**************************egon
00000000000000000000000000egon
expandtabs()tabキーのスペース数を指定
name='egon\thello'
print(name)
print(name.expandtabs(1))
lower()文字はすべて小文字になります
upper()文字がすべて大文字に変わります
name='EGON'
print(name.lower())
name='eg'
print(name.upper())
Capitalize()頭文字大文字
swapcase()大文字と小文字の反転
title()各単語の頭文字大文字
name='egon say'
print(name.capitalize()) #
print(name.swapcase()) #
msg='egon say hi'
print(msg.title()) #
isalnum()判定文字列は数字とアルファベットからなる
isalpha()判断文字列はアルファベットのみからなる
name='egon123'
print(name.isalnum()) #
name='egon'
print(name.isalpha()) #
:( )
True
True
数値タイプの判断
num1=b'4' #Bytes
num2=u'4' #unicode,python3 u unicode
num3=' ' #
num4='Ⅳ' #
# isdigit bytes,unicode,
print(num1.isdigit())
print(num2.isdigit())
print(num3.isdigit())
print(num4.isdigit())
# isdecimal unicode
print(num2.isdecimal())
print(num3.isdecimal())
print(num4.isdecimal())
# isnumberic unicode, ,
print(num2.isnumeric())
print(num3.isnumeric())
print(num4.isnumeric())
3、ブール値(bool)
主に論理で判断する
2つの値のみ:
True(真)
False(偽)
練習:
判定ブール値
>>>True or Flase and Flase
True
4、リスト
定義:[]内に任意のタイプの値が複数ある場合、使用、分割
my_girl_friends=list(['alex','wupeiqi','yuanhao',4,10,30])
以下のように簡単に書くことができます.
my_girl_friends=['alex','wupeiqi','yuanhao',4,10,30]
複数の値を格納できます.各値は任意のデータ型に対応できます.
names=[‘alex’,’egon’,’lyndon’]
リスト内の要素を取るには、0から下付きで始まる必要があります.
a.索引(下付き)
my_girl_friends=['alex','wupeiqi','yuanhao',4,10,30]
print(my_girl_friends[2])
b.スライス
my_girl_friends=['alex','wupeiqi','yuanhao',4,10,30]
print(my_girl_friends[1:3])
c.追加
my_girl_friends=['alex','wupeiqi','yuanhao',4,10,30]
my_girl_friends.append('oldboy')
d.削除
pop()インデックスが指定されていない場合は、最後から削除します
remove()値で削除
my_girl_friends=['alex','wupeiqi','yuanhao',4,10,30]
my_girl_friends.pop() #
my_girl_friends.pop(0) # ,
my_girl_friends.remove('yuanhao') # yuanhao
e.統計長(リスト内の要素の個数を統計する)
my_girl_friends=['alex','wupeiqi','yuanhao',4,10,30]
my_girl_friends.__len__()
print(len(my_girl_friends))
f.inメンバー演算
my_girl_friends=['alex','wupeiqi','yuanhao',4,10,30]
print('wupeiqi' in my_girl_friends) :( )
True
g.挿入
Insert()を指定した位置に挿入する前に
my_girl_friends=['alex','wupeiqi','alex','yuanhao',4,10,30]
my_girl_friends.insert(1,'Sb')
その他の操作:
clear()リストの内容をクリア
copy()リストの内容を新しいリストにコピー
count()統計リスト内の要素の個数
extend()一度に複数の要素を追加
index()表示要素下付き
reverse()反転リスト
sort()小から大へのソート
#キュー:先頭に移動
方法1:
appendを使用して追加し、popを使用して最初から取ります.
fifo=[]
#
fifo.append('first')
fifo.append('second')
fifo.append('third')
print(fifo)
#
print(fifo.pop(0))
print(fifo.pop(0))
print(fifo.pop(0))
方法2:
Insertを使用してエレメントを最初に挿入すると、後に挿入されたエレメントが前に表示され、popを使用してデフォルトで最後のエレメントから取得されます.
#
# fifo.insert(0,'first')
# fifo.insert(0,'second')
# fifo.insert(0,'third')
# print(fifo)
#
# #
# print(fifo.pop())
# print(fifo.pop())
# print(fifo.pop())
#スタック:先頭後出
5、辞書
作用:複数の値を保存して、key-valueアクセス、値を取るスピードは速くて、辞書内のキーの値のペアは無秩序で、下のラベルを使って値を取ることができません
定義:keyは変更不可能なタイプでなければならないし、hash可能なタイプでなければならない.valueは任意のタイプであってもよく、可変なデータ型は辞書のkeyとすることができる.
info={'name':'egon','age':18,'sex':'male'}#本質
info=dict({'name':'egon','age':18,'sex':'male'})
key:valueで値を格納し、複数の値を格納できます.
dic={‘name’:’egon’,’passwd’:123}
辞書はkeyでvalueを取ります
可変データ型(またはhash不可データ型と呼ばれる):
id不変
type不変
値が変わった
リストは可変タイプで、数値と文字列は可変タイプです.
a.保管/取出し
info={'name':'egon','age':18,'sex':'male'}
print(info['age']) # key age value
print(info.get(‘age’)) # key value ,
info['height']=1.80 # key=height,value=1.80
b.削除
pop(key,none)はkeyに従って削除し、keyが存在しない場合はnoneを表示し、異常は投げ出さない
info={'name':'egon','age':18,'sex':'male'}
print(info.pop('name'))
print(info.pop('asdfsadfasdfasfasdfasdfasdf',None))
その他の方法:
popitem()は、辞書のキー値ペアをランダムに削除します.
keys()は辞書のすべてのkeyを取り出します
values()は辞書のすべてのvalueを取り出します
items()は辞書をリスト形式で印刷し、辞書の要素はリストのメタグループで表されます.
copy()を新しい辞書にコピー
clear()辞書を空にする
info={'name':'egon','age':18,'sex':'male'}
print(info.popitem()) #
print(info.keys()) # key
print(info.values()) # value
print(info.items())
for key,value in info.items(): # key,value=('name','egon')
print(key,value)
fromkeys(keys,value)keysはリスト形式で、リスト内は複数のkeyであり、1つのvalueは複数のkeyに対応する
info={'name':'egon','age':18,'sex':'male'}
dic=info.fromkeys(['name','age','sex'],11111111)
:
{'name': 11111111, 'age': 11111111, 'sex': 11111111}
老字典update(新しい辞書)古い辞書を新しい辞書で更新する
setdefault()1つのkeyリストを使用して複数のvaule値を格納
d={}
d.setdefault('hobby',[]).append('play1') #d['hobby']
d.setdefault('hobby',[]).append('play2') #d['hobby']
d.setdefault('hobby',[]).append('play3') #d['hobby']
print(d)
:
{'hobby': ['play1', 'play2', 'play3']}
6、タプル
役割:複数の値を保存し、1つの要素が変更できないリストに相当し、主に読み取りに使用されます.
定義:()を使用して定義し、辞書のkeyとして使用できます.
a.索引
index()下付きスケールによる値
age=(11,22,33,44,55,33)# age=tuple((11,22,33,44,55))
print(age.index(33))
b.長さ
len()計算長さ
count()統計要素の個数
age=(11,22,33,44,55,33)
print(len(age))
print(age.count(33))
c.スライス
age=(11,22,33,44,55,33)
print(age[1:4])
簡単なショッピングカート
商品情報を印刷し、ユーザーが商品名と購入個数を入力すると、商品名、価格、購入個数をショッピングリストに追加し、空またはその他の不正入力を入力するとユーザーに再入力を要求する
msg_dic={
'apple':10,
'tesla':100000,
'mac':3000,
'lenovo':30000,
'chicken':10,
}
goods_l=[]
while True:
for key in msg_dic:
# print('Goods Name:%s Price:%s' %(key,msg_dic[key]))
print('\033[43mName:{name} Price:{price}\033[0m'.format(price=msg_dic[key],name=key))
choice=input('your goods name>>: ').strip()
if len(choice) == 0 or choice not in msg_dic:continue
count=input('your count>>: ').strip()
if count.isdigit():
goods_l.append((choice,msg_dic[choice],int(count)))
print(goods_l)
7、集合
作用:重量除去、関係演算
定義:異なる要素からなる集合.集合中は無秩序に配列されたhash値(すなわち、集合内の値は可変データ型)のセットであり、集合内の要素は一意であり、辞書のkeyとして使用することができ、集合の目的は異なる値を一緒に保存することであり、異なる集合間で関係演算に使用され、集合の単一の値にこだわる必要はない.
a.メンバー演算
inとnot in
結果はブール値を返します
b.関係演算
&交差
|統合
-差セット
^対称差セット
>=親
<=サブセット
親セット、子セットはブール値を返します.
#
s1={1,10,11,22}
s2={1,11,33}
#
print(s1 & s2)
#
print(s1 | s2)
#
print(s1 - s2)
print(s2 - s1)
#
print(s1 ^ s2)
#
s1={1,2,3,4}
s2={1,5}
print(s1 >= s2)
#
print(s1 <= s2)
print(s2 <= s1)
c.増加/削除
add()追加要素(可変タイプでなければなりません)
pop()要素の削除(ランダム削除)
remove()要素を削除(要素名を指定し、要素が存在しないとエラーが発生します)
discard()削除要素(要素名を指定し、要素が存在しない場合はエラーを報告しません)
d.方法
さまざまなコレクションを表すには、メソッドを使用します.
intersection交差
ユニオンへいれつ
ディファレンス差セット
symmetric_difference対称差セット
まとめ:
スカラー/原子タイプ:数値、文字列コンテナタイプ:リスト、メタグループ、ディクショナリ可変可変可変可変可変:リスト、ディクショナリ可変:数値、文字列、メタグループアクセス方式別ダイレクトアクセス:数値インデックスアクセス(シーケンスタイプ):文字列、リスト、メタグループkeyアクセス(マッピングタイプ)辞書