pythonベース---データ型


基本データ型
データは状態を表すために使われ、異なる状態は異なるデータ型で表される.
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アクセス(マッピングタイプ)辞書