1. 程式人生 > >python_基礎類型

python_基礎類型

字符 pen 轉換方法 bit alex 空白 反轉 刪除 sdl

【python的基本數據類型及進制掃盲】

一、進制

1.進制簡介

  進制就是進位制,是人們規定的一種進位方法。計算機底層的數據運算和存儲都是二進制數據。計算機語言就是二進制,計算機能直接識別二進制數據,其它數據都不能直接識別。

2.常用進制 

  對於任何一種進制---X進制,就表示某一位置上的數運算時是逢X進一位。 十進制是逢十進一,十六進制是逢十六進一,二進制就是逢二進一,以此類推,x進制就是逢x進位。我們經常使用的是二進制、八進制、十進制、十六進制。

  • 十進制:有10個基本數字,分別為0、1、2、3、4、5、6、7、8、9,運算規則”逢十進一”;

  • 八進制:有8個基本數字,分別為0、1、2、3、4、5、6、7,運算規則”逢八進一”

  • 十六進制:有16個基本數字,分別為0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F,運算規則”逢十六進一”。

  • 二進制:有2個基本數字,分別為0、1,運算規則”逢二進一”。

技術分享

3.進制轉換

我們有最常用的轉換方法:用十進制數據除以目標進制得到余數,並將余數從最後一個到第一個排列,就是轉換後的目標進制表示形式(簡稱“除基取余,直到商為0,余數反轉”)。以十進制43向二進制轉換為例:

技術分享

得到的數值排列:101011,所以十進制43的二進制表示形式為101011,同理,如果求八進制、十六進制表示形式,用43除以8、16即可。

二、基本數據類型

1.字符串

類:str

方法:選中str,按住command(ctrl)+左鍵跳轉至對應的方法

字符串常用方法歸納如下:

  • 1)capitalize

功能:實現字符串首字母大寫,自身不變,會生成一個新的值

技術分享 capitalize

例子:

1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 name = ‘hexin‘
4 v = name.capitalize() #調用str類,執行其中capitalize的方法
5 print(v)

輸出:

hexin
Hexin

  • 2)casefold

功能:將所有大寫變成小寫,另外支持多門語言變化

技術分享 casefold

例子:

1 name = ‘HexIn‘
2 v = name.casefold()
3 print(name)
4 print(v)

輸出:

HexIn
hexin

  • 3)lower,upper

功能:

lower:將所有的大寫變小寫,局限英文

upper:將所有小寫變大寫

技術分享 lower

例子:

1 name = ‘HeXin‘
2 v = name.lower()
3 print(name)
4 print(v)

結果:

HeXin
hexin

  • 4)center

功能:文本居中,空白處填充字符

參數1:表示總長度;參數2:空白處填充的字符(長度為1)

技術分享 center

例子:

1 name = ‘HeXin‘
2 v = name.center(20,‘*‘)
3 print(name)
4 print(v)

輸出:

HeXin
*******HeXin********

  • 5)count

功能:表示要查找的子序列在字符串中出現的次數

參數1:要查找的值(子序列);參數2:起始位置(索引);參數3:結束位置(索引)

技術分享 count

例子:

1 name = ‘HeXinddaklfjsl;dfjcnljdajsflajdf‘
2 v = name.count(‘a‘)
3 i = name.count(‘a‘,0,15)
4 print(name)
5 print(v)
6 print(i)

輸出:

3
1

  • 6)endswith

功能:判斷是否以xx結尾

參數1:判斷值;參數2,3:起始和結束的位置(個數)

技術分享 endswith

例子:

1 name = ‘HeXinddaklfjsl;dfjcnljdajsflajdf‘
2 v = name.endswith(‘df‘)
3 i = name.endswith(‘n‘,0,5)
4 print(name)
5 print(v)
6 print(i)

輸出:

HeXinddaklfjsl;dfjcnljdajsflajdf
True
True

  • 7)expandtabs

功能:找到制表符\t,進行替換(包含前面的值)

技術分享 expandtabs

例子:

1 name = "al\te\tx\nalex\tuu\tkkk"
2 v = name.expandtabs(5)  #包含前面的值,5個長度
3 print(v)

輸出:

al   e    x
alex uu   kkk

  • 8)find

功能:找到指定子序列的索引位置,不存在返回-1

技術分享 find

例子:

1 name = ‘hexin‘
2 v = name.find(‘0‘)
3 i = name.find(‘x‘)
4 print(v)
5 print(i)

輸出:

-1
2

  • 9)format,%s,format_map

功能:字符串格式化

技術分享 format

技術分享 format_map

例子:

技術分享
 1 tpl1 = "我是:%s;年齡:%s;性別:%s" %( ‘hexin‘,18,‘man‘)
 2 print(tpl1)
 3 
 4 tpl2 = "我是:{0};年齡:{1};性別:{2}"
 5 v2 = tpl2.format("李傑",19,‘都行‘)
 6 print(v2)
 7 
 8 tpl3 = "我是:{name};年齡:{age};性別:{gender}"
 9 v3 = tpl3.format(name=‘李傑‘,age=19,gender=‘隨意‘)
10 print(v3)
11 
12 tpl4 = "我是:{name};年齡:{age};性別:{gender}"
13 v4 = tpl4.format_map({‘name‘:"李傑",‘age‘:19,‘gender‘:‘中‘})
14 print(v4)
技術分享

輸出:

我是:hexin;年齡:18;性別:man
我是:李傑;年齡:19;性別:都行
我是:李傑;年齡:19;性別:隨意
我是:李傑;年齡:19;性別:中

  • 10)isalnum

功能:是否是數字或漢字

技術分享 isalnum

例子:

1 name = ‘hexin0好‘
2 v = name.isalnum()
3 print(v)

輸出:

True

  • 11)isdecimal,isdigit,isnumeric

功能:是否是數字

技術分享 isalnum 技術分享 isdecimal 技術分享 isdigit

例子:

1 num = ‘二‘
2 v1 = num.isdecimal() # ‘123‘
3 v2 = num.isdigit()   # ‘123‘,‘②‘
4 v3 = num.isnumeric() # ‘123‘,‘二‘,‘②‘
5 print(v1,v2,v3)

輸出:

False False True

  • 12)isidentifer

功能:是否是有效的標識符

技術分享 isidentifier

例子:

1 n = ‘1name‘
2 u = ‘name‘
3 v = n.isidentifier()
4 i = u.isidentifier()
5 print(v)
6 print(i)

輸出:

False
True

  • 13)islower(isupper)

功能:是否全部是小寫(大寫)

技術分享 islower

例子:

1 name = ‘hexin‘
2 name1 = ‘Hexin‘
3 v = name.islower()
4 i = name1.islower()
5 print(v)
6 print(i)

輸出:

True
False

  • 14)isprintable

功能:是否包含隱含的XX(包含\n,\t等不可見字符為False)

技術分享

技術分享 isprintable

例子:

1 name = ‘hexindas\talj,hexin‘
2 v = name.isprintable()
3 print(v)

輸出:

False

  • 15)join

功能:元素拼接

技術分享 join

例子:

技術分享
1 name = ‘hexin‘
2 
3 v = "_".join(name) # 內部循環每個元素
4 print(v)
5 
6 name_list = [‘1‘,‘2‘,‘3‘,‘4‘]
7 v = "+".join(name_list)
8 print(v)
技術分享

輸出:

h_e_x_i_n
1+2+3+4

  • 16)rjust,ljust

功能:左右填充,類似center

技術分享 ljust

例子:

1 name = ‘hexin‘
2 v = name.ljust(14,‘*‘)
3 i = name.rjust(6,‘*‘)
4 print(v)
5 print(i)

輸出

hexin*********
*hexin

  • 17)maketrans,translate

功能:創建對應關系,翻譯轉換

技術分享 maketrans

例子:

1 m = str.maketrans(‘aeiou‘,‘12345‘) # 對應關系
2 name = "akpsojfasdufasdlkfj8ausdfakjsdfl;kjer09asdf"
3 v = name.translate(m)
4 print(v)

輸出:

1kps4jf1sd5f1sdlkfj815sdf1kjsdfl;kj2r091sdf

  • 18)partition

功能:分割,保留分割的元素

技術分享 partition

例子:

1 content = "9SB6SB6"
2 v = content.partition(‘SB‘) # partition
3 print(v)

輸出:

(‘9‘, ‘SB‘, ‘6SB6‘)

  • 19)replace

功能:替換

技術分享 replace

例子:

1 content = "1SB2SB3SB4"
2 v = content.replace(‘SB‘,‘Love‘)
3 print(v)
4 v = content.replace(‘SB‘,‘Love‘,1)
5 print(v)

輸出:

1Love2Love3Love4
1Love2SB3SB4

  • 20)strip

功能:移除空白,\n,\t, 自定義

技術分享 strip

例子:

1 name = ‘hexin \t‘
2 v = name.strip() # 空白,\n,\t
3 print(v)

輸出:

hexin

  • 21)zfill

功能:填充0

技術分享 zfill

例子:

1 name = ‘hexin‘
2 v = name.zfill(20)
3 print(v)

輸出:

000000000000000hexin

2.整數

類int

  • 1)bit_length

功能:當前整數的二進制表示的最少位數

技術分享 bit_length

例子:

age = 4 # 100
print(age.bit_length())

輸出:

3

  • 2)to_bytes

功能:獲取當前數據的字節表示

技術分享 to_bytes

例子:

age = 15
v = age.to_bytes(10,byteorder=‘big‘)
v = age.to_bytes(10,byteorder=‘little‘)
print(v)

輸出:

b‘\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00‘

3.list列表

類list

可變類型

  • 1)append

功能:追加

技術分享 append

例子:

user_list = [‘tom‘,‘劉‘,‘jack‘,‘n‘] # 可變類型
user_list.append(‘hex‘)
print(user_list)

輸出

[‘tom‘, ‘劉‘, ‘jack‘, ‘n‘, ‘hex‘]

  • 2)clear

功能:清空

例子:

user_list = [‘tom‘,‘劉‘,‘jack‘,‘n‘] # 可變類型
user_list.clear()
print(user_list)

輸出:

[]

  • 3)copy

功能:淺拷貝

例子:

user_list = [‘tom‘,‘劉‘,‘jack‘,‘n‘] 
t = user_list.copy()
print(user_list)
print(t)

輸出:

[‘tom‘, ‘劉‘, ‘jack‘, ‘n‘]
[‘tom‘, ‘劉‘, ‘jack‘, ‘n‘]

  • 4)count

功能:計數

例子:

user_list = [‘tom‘,‘n‘,‘劉‘,‘jack‘,‘n‘,‘n‘]
t = user_list.count(‘n‘)
print(user_list)
print(t)

輸出:

[‘tom‘, ‘n‘, ‘劉‘, ‘jack‘, ‘n‘, ‘n‘]
3

  • 5)extend

功能:擴展原列表

例子:

user_list = [‘tom‘,‘n‘,‘劉‘,‘jack‘,‘n‘,‘n‘]
user_list.extend(‘9‘)
print(user_list)

輸出:

[‘tom‘, ‘n‘, ‘劉‘, ‘jack‘, ‘n‘, ‘n‘, ‘9‘]

  • 6)index

功能:查找元素索引,沒有報錯

例子:

user_list = [‘tom‘,‘n‘,‘劉‘,‘jack‘,‘n‘,‘n‘]
v = user_list.index(‘n‘)
print(v)

輸出:

1

  • 7)pop

功能:刪除並獲取元素,索引

例子:

user_list = [‘tom‘,‘n‘,‘劉‘,‘jack‘,‘n‘,‘n‘]
v = user_list.pop(1)
print(v)
print(user_list)

輸出:

n
[‘tom‘, ‘劉‘, ‘jack‘, ‘n‘, ‘n‘]

  • 8)remove

功能:刪除,值

例子:

user_list = [‘tom‘,‘n‘,‘劉‘,‘jack‘,‘n‘,‘n‘]
user_list.remove(‘n‘)
print(user_list)

輸出:

[‘tom‘, ‘劉‘, ‘jack‘, ‘n‘, ‘n‘]

  • 9)reverse

功能:翻轉

例子:

user_list = [‘tom‘,‘n‘,‘劉‘,‘jack‘,‘n‘,‘n‘]
user_list.reverse()
print(user_list)

輸出:

[‘n‘, ‘n‘, ‘jack‘, ‘劉‘, ‘n‘, ‘tom‘]

  • 10)sort

功能:排序

例子:

num = [11,2,3,6,111]
num.sort()
print(num)
num.sort(reverse=True)
print(num)

輸出:

[2, 3, 6, 11, 111]
[111, 11, 6, 3, 2]

4.range

  • 1)創建

py2.7:立即生成數字

range(1,11) # 生成 1,23,,4,56.10

py3:不會立即生成,只有循環叠代,才一個個生成;

技術分享
for i in range(1,11): 
    print(i)

for j in range(1,11,2): 
    print(j)

for k in range(10,0,-1): 
    print(k)
技術分享 技術分享
1
2
3
4
5
6
7
8
9
10
1
3
5
7
9
10
9
8
7
6
5
4
3
2
1
技術分享

例子

技術分享
# li = [‘eric‘,‘alex‘,‘tony‘]
# for i in range(0,len(li)):
# ele = li[i]
# print(ele)


li = [‘eric‘,‘alex‘,‘tony‘]
for i in li:
print(i)

# for i in range(0,len(li)):
# print(i+1,li[i])
技術分享

輸出

eric
alex
tony

5.enumerate

功能:額外生成一列有序的數字

例子

技術分享
li = [‘eric‘,‘alex‘,‘tony‘]
for i,ele in enumerate(li,1):
    print(i,ele)

#1 eric
#2 alex
#3 tony
技術分享 技術分享
li = [‘eric‘,‘alex‘,‘tony‘]
for i,ele in enumerate(li,1):
    print(i,ele)

v = input(‘請輸入商品序號:‘)
v = int(v)
item = li[v-1]
print(item)


#1 eric
#2 alex
#3 tony
#請輸入商品序號:1
#eric
技術分享

6.tuple元組

不可被修改類型,元組元素不可被修改,元祖是其他類型數據可以修改

  • 1)創建
user_tuple = (‘hex‘,‘eric‘,‘seven‘,‘hex‘)
  • 2)count

功能:獲取個數

user_tuple = (‘hex‘,‘eric‘,‘seven‘,‘hex‘)
v = user_tuple.count(‘hex‘)
print(v)

#2
  • 3)index

功能:獲取值得第一個索引位置

user_tuple = (‘hex‘,‘eric‘,‘seven‘,‘hex‘)
v = user_tuple.index(‘hex‘)
print(v)

#0

  • 4)註意:元組最後加逗號

例子

li = (‘hx‘,)
print(li)

  • 5)本身不可修改,但是元組元素是其他類型可以修改

user_tuple = (‘alex‘,‘eric‘,‘seven‘,[‘1‘,‘2‘,‘3‘],‘a4‘)
# user_tuple[0] = 123 執行錯誤
# user_tuple[3] = [11,22,33] 執行錯誤
user_tuple[3][1] = ‘0‘
print(user_tuple)

7.dict

可變類型

  • 1)clear

功能:清空

dic = {‘k1‘:‘v1‘,‘k2‘:‘v2‘}
dic.clear()
print(dic)

  • 2)copy

功能:淺拷貝

dic = {‘k1‘:‘v1‘,‘k2‘:‘v2‘}
v = dic.copy()
print(v)

  • 3)get

功能:根據key獲取指定value,不存在不報錯

dic = {‘k1‘:‘v1‘,‘k2‘:‘v2‘}
v = dic.get(‘k1111‘,1111)
print(v)

  • 4)pop

功能:刪除並獲取對應的value值

# dic = {‘k1‘:‘v1‘,‘k2‘:‘v2‘}
# v = dic.pop(‘k1‘)
# print(dic)
# print(v)

輸出:

{‘k2‘: ‘v2‘}
v1

  • 5)popitem

功能:隨機刪除鍵值對,並獲取到刪除的鍵值

dic = {‘k1‘:‘v1‘,‘k2‘:‘v2‘}
v = dic.popitem()
print(dic)
print(v)

輸出:

{‘k1‘: ‘v1‘}
(‘k2‘, ‘v2‘)

dic = {‘k1‘:‘v1‘,‘k2‘:‘v2‘}
k,v = dic.popitem() # (‘k2‘, ‘v2‘)
print(dic)
print(k,v)

輸出:

{‘k2‘: ‘v2‘}
k1 v1

dic = {‘k1‘:‘v1‘,‘k2‘:‘v2‘}
v = dic.popitem() # (‘k2‘, ‘v2‘)
print(dic)
print(v[0],v[1])

輸出:

{‘k1‘: ‘v1‘}
k2 v2

  • 6)setdefault

功能:增加,如果不存在即刪除

dic = {‘k1‘:‘v1‘,‘k2‘:‘v2‘}
dic.setdefault(‘k3‘,‘v3‘)
print(dic)
dic.setdefault(‘k1‘,‘1111111‘)
print(dic)

輸出:

{‘k2‘: ‘v2‘, ‘k1‘: ‘v1‘, ‘k3‘: ‘v3‘}
{‘k2‘: ‘v2‘, ‘k1‘: ‘v1‘, ‘k3‘: ‘v3‘}

  • 7)update

功能:批量增加或修改

dic = {‘k1‘:‘v1‘,‘k2‘:‘v2‘}
dic.update({‘k3‘:‘v3‘,‘k1‘:‘v24‘})
print(dic)

輸出:

{‘k1‘: ‘v24‘, ‘k2‘: ‘v2‘, ‘k3‘: ‘v3‘}

  • 8)fromkeys

功能:從序列鍵和值設置為value來創建一個新的字典。

例子:

dic = dict.fromkeys([‘k1‘,‘k2‘,‘k3‘],123)
dic[‘k1‘] = ‘asdfjasldkf‘
print(dic)

輸出:

{‘k2‘: 123, ‘k1‘: ‘asdfjasldkf‘, ‘k3‘: 123}

8.set

集合,不可重復列表,可變類型。

  • 1)創建
s1 = {"alex",‘eric‘,‘tony‘}
print(type(s1))
print(s1)

輸出:

<class ‘set‘>
{‘alex‘, ‘eric‘, ‘tony‘}

  • 2)difference

功能:輸出s1中存在,s2中不存在的值

s1 = {"alex",‘eric‘,‘tony‘,‘ii‘}
s2 = {"alex",‘eric‘,‘tony‘,‘hexin‘}
v = s1.difference(s2)
print(v)

輸出:

{‘ii‘}

  • 3)difference_update

功能:s1中存在,s2中不存在,然後對s1清空,然後在重新賦值

s1 = {"alex",‘eric‘,‘tony‘,‘ii‘}
s2 = {"alex",‘eric‘,‘tony‘,‘hexin‘}
s1.difference_update(s2)
print(s1)

輸出:

{‘ii‘}

  • 4)symmetric_difference

功能:s1中存在,s2中不存在的值及s2中存在,s1中不存在的值

s1 = {"alex",‘eric‘,‘tony‘,‘ii‘}
s2 = {"alex",‘eric‘,‘tony‘,‘hexin‘}
v = s1.symmetric_difference(s2)
print(v)
{‘ii‘, ‘hexin‘}

  • 5)intersection

功能:交集

s1 = {"alex",‘eric‘,‘tony‘,‘ii‘}
s2 = {"alex",‘eric‘,‘tony‘,‘hexin‘}
v = s1.intersection(s2)
print(v)

輸出:

{‘eric‘, ‘alex‘, ‘tony‘}

  • 6)union

功能:並集

s1 = {"alex",‘eric‘,‘tony‘,‘ii‘}
s2 = {"alex",‘eric‘,‘tony‘,‘hexin‘}
v = s1.union(s2)
print(v)

輸出:

{‘alex‘, ‘hexin‘, ‘eric‘, ‘ii‘, ‘tony‘}

  • 7)discard

功能:移除

s1 = {"alex",‘eric‘,‘tony‘,‘ii‘}
s2 = {"alex",‘eric‘,‘tony‘,‘hexin‘}
s1.discard(‘alex‘)
print(s1)

輸出:

{‘eric‘, ‘tony‘, ‘ii‘}

  • 8)update

功能:添加

s1 = {"alex",‘eric‘,‘tony‘,‘李泉‘,‘李泉11‘}
s1.update({‘alex‘,‘123123‘,‘fff‘})
print(s1)

輸出:

{‘fff‘, ‘李泉‘, ‘123123‘, ‘tony‘, ‘alex‘, ‘eric‘, ‘李泉11‘}

python_基礎類型