python02:數據類型

Python的數據類型有多種,主要有數字,字符串,列表、元組,字典,集合

1.數字類型

python數字類型:

整型,如1,2

浮點數,如1.2  1.4E4

布爾型,True,False

複數,(-5+4j)

 

 

2.bytes類型

文本總是Unicode str類型表示

二進制數據由bytes類型表示

>>> str = "我愛北京天安門">>> print(str.encode())
b'\xe6\x88\x91\xe7\x88\xb1\xe5\x8c\x97\xe4\xba\xac\xe5\xa4\xa9\xe5\xae\x89\xe9\x97\xa8'
>>> byte = str.encode()  #將字符串編碼成byte類型
>>> print(byte.decode()) #解碼二進制byte類型爲字符串
我愛北京天安門

 

 

3.字符串

字符串需要用引號引起來,可以使用單引號,雙引號,三引號。字符串是不可變的。

字符串相關操作

#返回字符‘m’的索引
>>> print(name.find("m"))
0

#格式化字符串
>>> print(name1.format(name="alex",age=23))
my name is alex,age is 23

#以字典方式進行賦值
>>> print(name1.format_map({"name": "oldboy", "age": 29}))
my name is oldboy,age is 29

#判斷是否是數字和字母
>>> print("1234dd".isalnum())
True

#判斷是否是字母
>>> print("adbd".isalpha())
True

#判斷是否是十進制
>>> print("123445".isdecimal())
True

#判斷是否是整數
>>> print("123".isdigit())
True

#判斷是否是合法的標識符
>>> print("-1A".isidentifier())
False

#按某個字符將其相連
>>> print("+".join(['1', '2', '3']))
1+2+3

#去掉字符串左右兩邊的空格
>>> print("\tAlex\t".strip())
Alex

#字符串替換
>>> print("alex li".replace('l','L'))
aLex Li

#split按某字符將其拆開以列表顯示
>>> print("1+2+3+4".split("+"))
['1', '2', '3', '4']

#按”\n”將字符串進行拆分,以列表方式顯示
>>> print("1+2\n+3+4".splitlines())
['1+2', '+3+4']

#以標題方式顯示
>>> print("alex li".title())
Alex Li

 

 

4.列表

列表是python常用數據類型之一,以“[]”表示,列表的常見操作切片,列表解析

#定義列表
>>> names = ["Alex","Hudaohong","Oldboy","tom"]

#切片操作
#獲取列表的第1元素
>>> names[1:2]
['Hudaohong']

#獲取列表第0,1元素
>>> names[:2]
['Alex', 'Hudaohong']

#-1指最右邊一個元素
>>> names[-4:-1:2]
['Alex', 'Oldboy']
>>> names[:-1:2]
['Alex', 'Oldboy']

#向列表中追加元素
>>> names.append("Lucy")
>>> names
['Alex', 'Hudaohong', 'Oldboy', 'tom', 'Lucy']

#向列表中插入元素
>>> names.insert(3,"Tom")
>>> names
['Alex', 'Hudaohong', 'Oldboy', 'Tom', 'tom', 'Lucy']

#刪除元素,默認是刪除最後一個元素,如果刪除的元素不存在,會報異常
>>> names.pop()
'Lucy'
>>> names.pop("Lucy")
Traceback (most recent call last):
  File "<pyshell#13>", line 1, in <module>
    names.pop("Lucy")
TypeError: 'str' object cannot be interpreted as an integer

#返回列表元素的索引
>>> names[names.index("Tom")]
'Tom'

#統計元素個數
>>> names.count("Tom")
1

#將列表反轉
>>> names
['tom', 'Tom', 'Oldboy', 'Hudaohong', 'Alex']
>>> names.reverse()
>>> names
['Alex', 'Hudaohong', 'Oldboy', 'Tom', 'tom']

#排序
>>> names.sort()
>>> names
['Alex', 'Hudaohong', 'Oldboy', 'Tom', 'tom']

 

 

列表的複製有淺複製與深複製之別

>>> import copy
>>> names = ["Alex","Hudaohong","Oldboy","Tom",["Jim","Lucy"]]
#淺複製
>>> names1 = names.copy()
#深複製
>>> names2=copy.deepcopy(names)
#修改列表第2個元素
>>> names[1] = "胡道宏"#修改嵌套列表的第1個元素
>>> names[4][0]="JIM">>>#顯示打印結果
>>> print("{name} is names".format(name=names))
['Alex', '胡道宏', 'Oldboy', 'Tom', ['JIM', 'Lucy']] is names
>>> print("{name} is names1".format(name=names1))
['Alex', 'Hudaohong', 'Oldboy', 'Tom', ['JIM', 'Lucy']] is names1
>>> print("{name} is names2".format(name=names2))
['Alex', 'Hudaohong', 'Oldboy', 'Tom', ['Jim', 'Lucy']] is names2

 

 

列表解析

列表解析是根據已有列表高效快速生成新列表的方式,它是迭代機制的一種應用

語法結構
[expression for iter_var in iterable]
[expression for iter_var in iterable if cond_expr]
>>> l1=[1,2,3,4]
#列表解析生成新的列表
>>> l2 = [I ** 2 for I in l1]
>>> l2
[1, 4, 9, 16]
>>> l3 = [I ** 2 for I in l1 if I> 2]
>>> l3
[9, 16]

 

 

5.字典

Python中的字典是無序的,是以鍵值對的形式存在,定義字典是需要用”{}”,如{”name”:”Tom”,”age”:23}

#定義字典
>>> info = {"stu01":"Tom","stu02":"Lucy","stu03":"Jim"}#通過鍵值獲取字典值
>>> info["stu01"]'Tom'
#增加
>>> info["stu04"] = "Baby"
#刪除
>>> del info["stu04"]
>>> info.pop("stu03")
'Jim'
#如果某個值不在字典中,不會報異常
>>> info.get("stu04")
>>> info.get("stu01")
'Tom'
#判斷個值是否在字典中
>>> print("stu01" in info)
True
#update合併字典,如果有同名字典會覆蓋
>>> dictb={"stu100":"zhangsan","stu02":"LiSi","stu101":"WangWu"}
>>> info.update(dictb)
>>> info
{'stu01': 'Tom', 'stu02': 'LiSi', 'stu100': 'zhangsan', 'stu101': 'WangWu'}
#以元組方式顯示字典的鍵值
>>> info_c = info.items()
>>> print(info_c)
dict_items([('stu01', 'Tom'), ('stu02', 'LiSi'), ('stu100', 'zhangsan'), ('stu101', 'WangWu')])
#初始化一個新字典
>>> dictC=dict.fromkeys([6,7,8],[1,{"name":"Boy"},444])
>>> dictC
{6: [1, {'name': 'Boy'}, 444], 7: [1, {'name': 'Boy'}, 444], 8: [1, {'name': 'Boy'}, 444]}
# 將會3個字典中的name都改了,類似於淺複製
>>> dictC[7][1]["name"] = "girls"
>>> dictC
{6: [1, {'name': 'girls'}, 444], 7: [1, {'name': 'girls'}, 444], 8: [1, {'name': 'girls'}, 444]}
#循環字典,推薦使用基本方式
>>> for key in dictC:print(key,dictC[key])6 [1, {'name': 'girls'}, 444]7 [1, {'name': 'girls'}, 444]8 [1, {'name': 'girls'}, 444]
#數據量大時不適合
>>> for k,v in info.items():print(k,v)
stu01 Tom
stu02 LiSi
stu100 zhangsan
stu101 WangWu

 

 

6.集合

集合set
   可以去重
    無序
    關係測試: 交集,並集,差集等
集合操作
#集合可以去重
>>> list01 = [1, 4, 5, 7, 3, 5, 1, 9]
>>> list01= set(list01)
>>> list01
{1, 3, 4, 5, 7, 9}
>>> list02=set([2,4,6,8,3])
#交集
>>> print(list01.intersection(list02))
{3, 4}
>>> print(list01&list02)
{3, 4}
#並集
>>> print(list01.union(list02))
{1, 2, 3, 4, 5, 6, 7, 8, 9}
>>> print(list01 | list02)
{1, 2, 3, 4, 5, 6, 7, 8, 9}
#差集,list01中有,list02中沒有
>>> print(list01.difference(list02))
{1, 5, 9, 7}
>>> print(list01 - list02)
{1, 5, 9, 7}
#子集:判斷list03是否list01的子集
>>> list03 = set([1,3,7])
>>> print(list03.issubset(list01))
True
#判斷list01是否list3的子集
>>> print(list01.issubset(list03))
False
# 對稱差集,兩個集合中互爲沒有的>
>> print(list01.symmetric_difference(list03))
{4, 5, 9}
>>> print(list01 ^ list03)
{4, 5, 9}
#判斷兩個集合,如果沒有合集則返回True
>>> list04=([5,6,8])
>>> print(list03.isdisjoint(list04))
True
#添加
>>> list01.add(99)
>>> list01.update([88,77,55])
>>> print(list01)
{1, 3, 4, 5, 99, 7, 9, 77, 55, 88}
#刪除集合元素
>>> list01.pop()
1
#remove刪除時不返回元素
>>> list01.remove(77)
>>> list01
{3, 4, 5, 99, 7, 9, 55, 88}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章