https://www.runoob.com/python3/python3-data-type.html
一、下載
https://www.python.org/downloads/mac-osx/
二、基礎(chǔ)語法和數(shù)據(jù)類型
1夫嗓、基本數(shù)據(jù)類型
Python3 的六個標準數(shù)據(jù)類型中:
不可變數(shù)據(jù)(3 個):Number(數(shù)字)简识、String(字符串)、Tuple(元組)忿危;
可變數(shù)據(jù)(3 個):List(列表)达箍、Dictionary(字典)、Set(集合)癌蚁。
string幻梯、list 和 tuple 都屬于 sequence(序列)
1??Number(數(shù)字)
Python3 支持 int兜畸、float、bool碘梢、complex(復數(shù))
#基本數(shù)據(jù)類型
counter = 100 # 整型變量
miles = 1000.0 # 浮點型變量
name = "runoob" # 字符串
print (counter)
print (miles)
print (name)
print (counter)
print (miles)
print (name)
a = b = c = 1
print('a:',a)
print('b:',b)
print('c:',c)
print(a+b+c)
a, b, c = 1, 2, "runoob"
print('a:',a)
print('b:',b)
print('c:',c)
兩個函數(shù)
type() 函數(shù)可以用來查詢變量所指的對象類型
isinstance()來判斷是否為某一種類型
counter = 100 # 整型變量
miles = 1000.0 # 浮點型變量
name = "runoob" # 字符串
print(type(counter),type(miles),type(name)) //查詢變量的類型
print(isinstance(counter,int)) //判斷是否為int
print(isinstance(counter,float)) //判斷是否為float
bol_1 = True #布爾
bol_2 = False #布爾
rint(type(bol_1),type(bol_2))
print(bol_1)
print(bol_2)
print(bol_1+bol_2) #true代表1咬摇,false代表0
數(shù)值運算
>>> 5 + 4 # 加法
9
>>> 4.3 - 2 # 減法
2.3
>>> 3 * 7 # 乘法
21
>>> 2 / 4 # 除法,得到一個浮點數(shù)
0.5
>>> 2 // 4 # 除法煞躬,得到一個整數(shù)
0
>>> 17 % 3 # 取余
2
>>> 2 ** 5 # 乘方
32
2??String(字符串)不可變(immutable)
是不可變結(jié)構(gòu)(immutable)
Python中的字符串用單引號 ' 或雙引號 " 括起來肛鹏,
同時使用反斜杠 \ 轉(zhuǎn)義特殊字符;+r可防止轉(zhuǎn)義
## 單引號
name = 'name'
## 雙引號
name = "hello"
##\\ 表示\
索引:索引值以 0 為開始值恩沛,-1 為從末尾的開始位置
截取 :變量[頭下標:尾下標:步長]
#!/usr/bin/python3
str='0123456'
print('輸出字符串\'0123456\'\t'+str)
print('輸出字符串第一個字符''\t'+str[0])
print('輸出字符串的最后一個字符''\t'+str[-1])
print('輸出字符串的倒數(shù)第二個字符''\t'+str[-2])
print('輸出從第一個開始到第五個字符''\t'+str[0:5])
print('輸出第一個到第五個在扰,每隔2個字符''\t'+str[0:5:2])
print('輸出字符串的第一個到倒數(shù)第二個字符''\t'+str[0:-1])
print('輸出第一個到第五個,每隔2個字符''\t'+str[0:-1:2])
print('r表示轉(zhuǎn)義‘+'r'\n')
print('\n')
3??List(列表)可變(mutable)
放置任意數(shù)據(jù)類型的有序集合,動態(tài)可變(mutable)
支持索引雷客,切片芒珠,可修改
列表是寫在方括號 [] 之間、用逗號分隔開的元素列表搅裙。
變量[頭下標:尾下標]
list = [ 'abcd', 786 , 2.23, 'runoob', 70.2 ]
tinylist = [123, 'runoob']
print (list) # 輸出完整列表
print (list[0]) # 輸出列表第一個元素
print (list[1:3]) # 從第二個開始輸出到第三個元素
print (list[2:]) # 輸出從第三個元素開始的所有元素
print (tinylist * 2) # 輸出兩次列表
print (list + tinylist) # 連接列表
倒序輸出(反轉(zhuǎn))
reverse():是python中列表的一個內(nèi)置方法,其實返回的是None,只有在print()的時候才看出反轉(zhuǎn)的效果皱卓。
reversed():是python自帶的一個方法,返回的是一個把序列值經(jīng)過反轉(zhuǎn)之后的迭代器部逮。
bb = [1,3,5,7] /# 列表的反轉(zhuǎn)
print(list(reversed(bb)))
aa = (1, 2, 3) #元祖的反轉(zhuǎn)
print(tuple(reversed(aa)))
ss = "qwer1234"#字符串的反轉(zhuǎn)
print(''.join(reversed(ss)))
字符串的串聯(lián)
join():python中 字符串 自帶的一個方法娜汁,S.join(可迭代) - > str返回一個字符串,該字符串是字符串的串聯(lián)迭代兄朋。 元素之間的分隔符是S掐禁。
tt = ["12", "345", "67"]/#可迭代對象為列表
cc = ''.join(tt)
ee = '?'.join(tt)
print(cc)
print(ee)
ss = ("qw", "er", "fg")/#可迭代對象為元祖
dd = ''.join(ss)
gg = '&'.join(ss)
print(dd)
print(gg)
分隔字符串
split():通過指定分隔符對字符串進行切片為列表,如果參數(shù) num 有指定值颅和,則分隔 num+1 個子字符串傅事。str.split(str="", num=string.count(str)).
str = "Line1-abcdef \nLine2-abc \nLine4-abcd"
print (str.split())
print (str.split(' ', 1 ))
txt = "Google#Runoob#Taobao#Facebook"
# 第二個參數(shù)為 1,返回兩個參數(shù)列表
x = txt.split('#', 1)
print (x)
字符串的倒序輸出
inputWords = input("請輸入\n")#輸入字符串
x = inputWords.split()#將字符串切片成列表
y = x[-1::-1]#將列表反轉(zhuǎn)
print(y)
outWords = "".join(y)#將反轉(zhuǎn)的列表拼接成字符串
print(outWords)#倒序輸出字符串
4??Tuple(元組)
放置任意數(shù)據(jù)類型的有序集合,靜態(tài)不可變(immutable)
支持索引峡扩、切片但不可修改
tuple = ( 'abcd', 786 , 2.23, 'runoob', 70.2 )
tinytuple = (123, 'runoob')
print (tuple) # 輸出完整元組
print (tuple[0]) # 輸出元組的第一個元素
print (tuple[1:3]) # 輸出從第二個元素開始到第三個元素
print (tuple[2:]) # 輸出從第三個元素開始的所有元素
print (tinytuple * 2) # 輸出兩次元組
print (tuple + tinytuple) # 連接元組
tup[0] = 11 # 修改元組元素的操作是非法的
雖然tuple的元素不可改變享完,但它可以包含可變的對象,比如list列表有额。
構(gòu)造包含 0 個或 1 個元素的元組比較特殊般又,所以有一些額外的語法規(guī)則:
tup1 = () # 空元組
tup2 = (20,) # 一個元素,需要在元素后添加逗號
5??Set(集合)
是由一個或數(shù)個形態(tài)各異的大小整體組成的巍佑,構(gòu)成集合的事物或?qū)ο蠓Q作元素或是成員茴迁。
基本功能是進行成員關(guān)系測試和刪除重復元素。
可以使用大括號 { } 或者 set() 函數(shù)創(chuàng)建集合萤衰,注意:創(chuàng)建一個空集合必須用 set() 而不是 { }堕义,因為 { } 是用來創(chuàng)建一個空字典。
sites = {'Google', 'Taobao', 'Runoob', 'Facebook', 'Zhihu', 'Baidu'}
print(sites) # 輸出集合,重復的元素被自動去掉
# 成員測試
if 'Runoob' in sites :
print('Runoob 在集合中')
else :
print('Runoob 不在集合中')
# set可以進行集合運算
a = set('abracadabra')
b = set('alacazam')
print(a)
print(a - b) # a 和 b 的差集
print(a | b) # a 和 b 的并集
print(a & b) # a 和 b 的交集
print(a ^ b) # a 和 b 中不同時存在的元素
6??Dictionary(字典)
字典(dictionary)是Python中另一個非常有用的內(nèi)置數(shù)據(jù)類型倦卖。
列表是有序的對象集合洒擦,字典是無序的對象集合。兩者之間的區(qū)別在于:字典當中的元素是通過鍵來存取的怕膛,而不是通過偏移存取熟嫩。
字典是一種映射類型,字典用 { } 標識褐捻,它是一個無序的 鍵(key) : 值(value) 的集合掸茅。
鍵(key)必須使用不可變類型。在同一個字典中柠逞,鍵(key)必須是唯一的昧狮。
dict = {}
dict['one'] = "1 - 菜鳥教程"
dict[2] = "2 - 菜鳥工具"
tinydict = {'name': 'runoob','code':1, 'site': 'www.runoob.com'}
print (dict['one']) # 輸出鍵為 'one' 的值
print (dict[2]) # 輸出鍵為 2 的值
print (tinydict) # 輸出完整的字典
print (tinydict.keys()) # 輸出所有鍵
print (tinydict.values()) # 輸出所有值
構(gòu)造函數(shù) dict() 可以直接從鍵值對序列中構(gòu)建字典如下:
三、輸入輸出
name = input("input your name:")
print(name)
## 支持占位符
key = 'key'
print('name: {}', key)
四板壮、執(zhí)行結(jié)構(gòu)
五逗鸣、函數(shù)模塊
六、一些方法和函數(shù)
1绰精、str.format()格式化
print("網(wǎng)站名:{name}, 地址 {url}".format(name="菜鳥教程", url="www.runoob.com"))
??網(wǎng)站名:菜鳥教程, 地址 www.runoob.com
2慕购、str.strip()截掉首尾指定字符
用于移除字符串頭尾指定的字符(默認為空格或換行符)或字符序列
str = "00000003210Runoob01230000000";
print str.strip( '0' ); # 去除首尾字符 0
??3210Runoob0123
str2 = " Runoob "; # 去除首尾空格
print str2.strip();
??Runoob
str = "123abcrunoob321"
print (str.strip( '12' )) # 字符序列為 12
??3abcrunoob3
3、str.lstrip() 截掉左邊指定字符
方法用于截掉字符串左邊的空格或指定字符
4茬底、str.split()分隔字符串
通過指定分隔符對字符串進行切片為列表,如果參數(shù) num 有指定值获洲,則分隔
str = "Line1-abcdef \nLine2-abc \nLine4-abcd"
print (str.split())
print (str.split(' ', 1 ))
txt = "Google#Runoob#Taobao#Facebook"
# 第二個參數(shù)為 1阱表,返回兩個參數(shù)列表
x = txt.split('#', 1)
print (x)
5、str.join()串聯(lián)字符串
tt = ["12", "345", "67"]/#可迭代對象為列表
cc = ''.join(tt)
ee = '?'.join(tt)
print(cc)
print(ee)
ss = ("qw", "er", "fg")/#可迭代對象為元祖
dd = ''.join(ss)
gg = '&'.join(ss)
print(dd)
print(gg)
6贡珊、str.count()統(tǒng)計字符串里某個字符出現(xiàn)的次數(shù)
str.count(sub, start= 0,end=len(string))
str = "this is string example....wow!!!";
sub = "i";
print "str.count(sub, 4, 40) : ", str.count(sub, 4, 40)
sub = "wow";
print "str.count(sub) : ", str.count(sub)
??str.count(sub, 4, 40) : 2
??str.count(sub) : 1
7最爬、list.index()
用于從列表中找出某個值第一個匹配項的索引位置
list.index(x[, start[, end]])
aList = [123, 'xyz', 'runoob', 'abc']
print "xyz 索引位置: ", aList.index( 'xyz' )
print "runoob 索引位置 : ", aList.index( 'runoob', 1, 3 )
??xyz 索引位置: 1
??runoob 索引位置 : 2
8、List sort()排序
list.sort( key=None, reverse=False)升序
函數(shù)sort()會默認地按升序排列
list.sort() 不會返回對象门岔,會改變原有的list
l = [1, 2, 3, 7, 9]
l.sort()
print(l.sort())
print(l)
list =['a','cc','eeee','ff']
list.sort()#升序
list.sort(reverse=True)#降序
print(list)
##9爱致、
def compare(x):
return len(x)
list.sort(key=compare) #按照字符串長度升序排列
print(list)
sorted與sort區(qū)別
前者是內(nèi)置函數(shù),后者是列表寒随、字典的方法糠悯;前者返回一個新列表
tup= (3.2,8,5)
print(sorted(tup))
print(tup) #原值不會改變
print(tuple(reversed(tup))) #需要遍歷才能讀取
print(tup) #原值不會改變
l = [1, 2, 3, 7, 7,9,33]
print(l.reverse()) #實際返回是NONE
print(l)#原值發(fā)生改變
print(l.sort()) #實際返回是NONE
print(l) #原值發(fā)生改變
9、reversed與reverse區(qū)別
前者是內(nèi)置函數(shù)妻往,后者是列表互艾、字典的方法。前者返回一個新列表
>>> i = [55, 12, 23, 45, 18, 26]
>>> for n in reversed(i):
print(n, end = ' ')
26 18 45 23 12 55
>>> i
[55, 12, 23, 45, 18, 26]
>>> i.reverse()
>>> i
[26, 18, 45, 23, 12, 55]
>>>