Python數據內容
- 2019 年 10 月 6 日
- 筆記
Python字元串教程
字元串作為python中最為常見的一種結構,它最典型的特徵就是有引號,無論是單引號,或是雙引號,還是三引號,它們都是字元串。
"""
字元串string, 從左向右從0開始,從右向左-1,-2。
"""
a = "abcdef"
print(a[2])
print(a[-2])
"""
字元串的基本操作, python中的字元串是不可變的,會拷貝一份進行修改,原string不變
切割,並沒有slice函數直接中括弧,中間使用**冒號**隔開 [起始:結束:步長]
"""
print(a[0:3]) # abc
print(a[0:5:2]) # ace 或者是省略直接寫冒號
print(a[::2]) # ace 步長為2表示隔著讀取
print(a[1:4:2]) # bd 從b開始讀取
print(a[::-2]) # fdb 步長為負數表示從右到左,倒著讀
print(a[-1:-4:-2]) # fd 步長為負數表示從右到左,倒著讀
print("===========================")
"""
a.capitalize() 字元串**首字母**進行大寫
a.title() 字元串**每個單詞的首字母**進行大寫
a.startswith() 字元串是否以某個字串開始
a.endswith() 字元串是否以某個字串結尾
a.lower() 字元串所有字母進行小寫
a.upper() 字元串所有字母進行大寫
"""
b = "hello world"
print(a.capitalize())
print(b.title())
print(a.startswith("ab"))
print(a.endswith("ab"))
print(a.lower())
print(a.upper())
print(a.islower())
print(a.isnumeric())
"""
a.ljust(self, width, fillchar) 字元串進行左對齊,字元串佔用的長度和需要填充的字元
a.rjust(self, width, fillchar) 字元串進行右對齊,字元串佔用的長度和需要填充的字元
a.center(self, width, fillchar) 字元串進行居中,字元串佔用的長度和需要填充的字元
a.lstrip(char) 刪除字元串左邊的字元,不寫參數的話去除的是左邊空格,相當於左邊trim()
a.rstrip(char) 刪除字元串右邊的字元,不寫參數的話去除的是右邊空格,相當於右邊trim()
a.strip(char) 刪除字元串兩邊的字元,不寫參數的話去除的是兩邊空格,相當於java的trim()
"""
a = "abcdef"
print(a.ljust(10, "0")) # abcdef0000
print(a.rjust(10, "0")) # 0000abcdef
print(a.center(10, "0")) # 00abcdef00
print(a.lstrip("0"))
print(a.rstrip("0"))
print(a.strip("0"))
"""
a.partition("b") 將字元串以"b"字,分割,如果b在中間且只有一個b,那麼返回一個數組[前,"b",後]
a.splitlines() 將字元串逐行分割,返回一個list,非數組,按需求進行選擇方法
a.isalpha() 字元串是否全是字母,不論大小寫,返回bool
a.isdigit() 字元串是否全是數字,返回bool
a.isalnum() 前兩個的集合體al + num,判斷字元串是否包含數字或者字母或者混合也行
a.isspace() 字元串是否只包含空格
a.join(["xxx","yyy"]) list中每個元素的後面都插入a字元串
"""
b = "abncdnef"
print(a.partition("b")[1]) # ('a', 'b', 'cdef') -> b
print(b.splitlines()) # ['ab', 'cd', 'ef']
print(a.isalpha())
print(a.isdigit())
print(a.isalnum())
print(a.isspace())
print("x".join(["1", "2", "3"])) # 1x2x3
print("".join(["1", "2", "3"])) # 123 將list迅速轉換為一個字元串
# "abcbdbebf" -> "acdef"
c = "abcbdbebf"
d = c.split("b") # 去除字元串中所有的b,返回一個list
result = "".join(d) # list轉換為字元串
print(result)
"""
a.ljust(self, width, fillchar) 字元串進行左對齊,字元串佔用的長度和需要填充的字元
a.rjust(self, width, fillchar) 字元串進行右對齊,字元串佔用的長度和需要填充的字元
a.center(self, width, fillchar) 字元串進行居中,字元串佔用的長度和需要填充的字元
a.lstrip(char) 刪除字元串左邊的字元,不寫參數的話去除的是左邊空格,相當於左邊trim()
a.rstrip(char) 刪除字元串右邊的字元,不寫參數的話去除的是右邊空格,相當於右邊trim()
a.strip(char) 刪除字元串兩邊的字元,不寫參數的話去除的是兩邊空格,相當於java的trim()
"""
a = "abcdef"
print(a.ljust(10, "0")) # abcdef0000
print(a.rjust(10, "0")) # 0000abcdef
print(a.center(10, "0")) # 00abcdef00
print(a.lstrip("0"))
print(a.rstrip("0"))
print(a.strip("0"))
"""
a.partition("b") 將字元串以"b"字,分割,如果b在中間且只有一個b,那麼返回一個數組[前,"b",後]
a.splitlines() 將字元串逐行分割,返回一個list,非數組,按需求進行選擇方法
a.isalpha() 字元串是否全是字母,不論大小寫,返回bool
a.isdigit() 字元串是否全是數字,返回bool
a.isalnum() 前兩個的集合體al + num,判斷字元串是否包含數字或者字母或者混合也行
a.isspace() 字元串是否只包含空格
a.join(["xxx","yyy"]) list中每個元素的後面都插入a字元串
"""
b = "abncdnef"
print(a.partition("b")[1]) # ('a', 'b', 'cdef') -> b
print(b.splitlines()) # ['ab', 'cd', 'ef']
print(a.isalpha())
print(a.isdigit())
print(a.isalnum())
print(a.isspace())
print("x".join(["1", "2", "3"])) # 1x2x3
print("".join(["1", "2", "3"])) # 123 將list迅速轉換為一個字元串
# "abcbdbebf" -> "acdef"
c = "abcbdbebf"
d = c.split("b") # 去除字元串中所有的b,返回一個list
result = "".join(d) # list轉換為字元串
print(result)
Python數組教程
數組,一般科班出身的同學會叫它數組,因為在C裡面我們是這麼叫的,但是有些人更願意直接叫他列表或list,叫起來更直接,它最典型的特徵就是它的中括弧[],基本看到這個就八九不離十了,他就是數組。
"""
list列表元素的修改操作
"""
a_list = [1,2,3,4]
a_list[2] = "雙擊666"
print(a_list)
"""
查詢list元素 (in, not in, index, count)
為了避免index方法找不到的報錯,解決方案:
1, 先判斷是否in,然後再list.index進行獲取
2, 判斷count非零即真,-1等負數也是真,再進行獲取
"""
if 1 in a_list:
print("存在")
if 88 not in a_list:
print("不存在list中")
print(a_list.index(2)) # 查詢某個元素的index, 找不到的話不返回-1,直接報錯
print(a_list.count(2)) # 查詢某一個元素出現的次數
if a_list.count(22):
print("22元素存在可以安全的獲取索引:%d" % a_list.index(22))
else:
print("元素不存在列表中")
"""
list刪除元素
del 是一個內置函數,並不是屬性, del 函數直接銷毀對象
pop 是屬性,pop()默認刪除最後一個,pop(1)刪除索引為1的元素,並且返回該元素
remove 是屬性, pop是知道索引進行刪除,remove是知道obj進行刪除
clear 清空為[]
"""
b_list = [1, 2, 3, 4]
del b_list[2] # del b_list的話會直接刪除b_list整個list,銷毀對象,再print的話就話undefined
print(b_list)
print(b_list.pop(0))
b_list.remove(2) # remove不存在的元素會拋異常報錯
b_list.clear()
print(b_list)
"""
list元素的排序
sort() 默認無參數是從小到大
reversed(list) 整個列表直接反過來,返回值是一個新的list
"""
import random
a_list = []
for i in range(10):
a_list.append(random.randint(0, 200))
print(a_list)
a_list.sort()
print(a_list)
a_list.sort(reverse=True) # 降序,從大到小
print(a_list)
new_list = reversed(a_list) # [12,10,7,9] -> [9,7,10,12]
print(new_list)
"""
一個學校,三個辦公室, 八位老師進行隨機分配辦公室
"""
school = [[], [], []]
teacher_list = list("ABCDEFGH")
for name in teacher_list:
index = random.randint(0,2)
school[index].append(name)
print(school)
Python元組教程
元組沒什麼好說的,和數組幾乎一模一樣,但是它不可以被修改,也就是說,所有適用於數組修改的方法,它統統都沒有。元組的主要特徵是一對小括弧()。元組也有點比較特殊的地方,如果是單元素,一定要注意加上逗號,注意看下面的特例。
"""
字元串表示:"", '', """"""
list表示:[], 可修改
元組的表示:(), 元組的元素不能進行修改,
元組中如果只有一個元素的話,後面加上逗號表明是一個tuple,否則就是元素真實類型
"""
a_tuple = (1, 3.14, "Hello", True)
empty_tuple = ()
empty_tuple2 = tuple()
# 特例
b_tuple = (1) # type = int
c_tuple = (1,) # type = tuple
"""
訪問元組tuple
查詢的話和list一樣使用count, index
"""
print(a_tuple[2])
# a_tuple[1] = "哈哈" 元組的元素不能重新賦值和修改,因為tuple是不可變的
print(a_tuple.count(1)) # 元組中1對象出現的次數是2, 因為Ture在電腦眼中就是1
print(a_tuple.index(3.14))
Python字典教程
字典這個東西在我們的現實生活中就是作查詢用的,靠一個字查詢到這個字的全部意思。那在python裡面也差不多這個意思。一個索引詞對應一個值 A: aaaaa,字典的特徵有兩個,第一個就是一個索引對應一個值,用冒號進行對應,第二個特徵就是大括弧{}。
"""
字典數據類型dictionary表示方法: 花括弧{}
"""
a_dict = {"name": "張三", "age": 20, "id": "007"}
print(a_dict)
b_dict = {}
c_dict = dict()
"""
字典的常見操作
字典的key必須是**不可變**,可以是任意類型,元組也可以為key,因為元組是不可變的
注意字典的key必須不可變但是可以重複, 重複的話獲取的是最後一個
"""
d_dict = {(1,2,3): "元組value01",
"name": "張三",
"info": {"address": "石家莊", "country": "中國"},
(1,2,3): "元組value02"}
print(d_dict[(1,2,3)])
print(d_dict["info"]["country"])
"""
字典修改元素的value, 前提是key存在,
添加元素: 否則就會新增一個key-value
刪除元素:del python內置函數可以用在list, tuple和字典都可以用
"""
d_dict["name"] = "李四"
d_dict["name2"] = "王五" # name2 不存在, 直接就會添加進去
del d_dict["name2"]
d_dict.clear()
print(d_dict)
"""
len() 字典的長度
keys() 返回字典中所有的key的集合, 轉化為list類型
values() 返回字典中所有的value的集合, 轉化為list類型
items() 返回的是一對對key-value以元組的形式
"""
print(len(a_dict))
print(list(a_dict.keys())) # dict_keys(['name', 'age', 'id']) -> ['name', 'age', 'id']
print(list(a_dict.values()))
print(list(a_dict.items())[1][1]) # [('name', '張三'), ('age', 20), ('id', '007')]
"""
python3中取消了字典的has_key方法,使用的是setdefault
使用的是setdefault("key", "找不到的默認值"), 找不到的話會修改添加新的key到字典中
get(key, 默認值) 和setdefault的作用基本一樣, 但是不會添加新的key,原來dict不會變
"""
if "name" in a_dict:
print("有一個key為name的。")
else:
print("字典中沒有一個key叫做name")
print(a_dict.setdefault("name1", "name的默認值")) # 找不到name1, 添加進去
print(a_dict)
print(a_dict.get("name2", "name的默認值")) # 找不到name2, 但是不會添加進去
print(a_dict)
"""
字典的遍歷,
"""
a_dict = {"name": "張三", "age": 20, "id": "007"}
for key in a_dict.keys():
print(key)
for value in a_dict.values():
print(value)
for item in a_dict.items(): # 遍歷字典的元素,返回一個個元組(),()
print(item)
for key, value in a_dict.items(): # 遍歷字典的鍵值對
print(key, "->", value)
str1 = "xxx"
str2 = "yyy"
print(str1, str2) # print多個變數, 第二個參數默認是一個空格:xxx yyy
print(str1, "—>", str2) # xxx —> yyy
"""
enumerate(list / tuple等帶有索引的數據結構)可以獲得index
"""
a_list = ["張三", "李四", "王五"]
a_tuple = ("張三", "李四", "王五")
for index, temp in enumerate(a_list):
print(index, "–>", temp)
Python集合(SET)教程
Set是python裡面比較特殊的一個集合,它也是由大括弧{}做成的,但是呢,它裡面的元素排列和數組一樣,這樣{1,2,4,6},set最特別的地方它裡面的元素是不可以重複且沒有順序的,這也就間接告訴我們,他不可以直接用中括弧進行取值,它可以為list進行去重。
"""
集合set表示花括弧{}, 無序不可重複,重讀的話只保留一份,python自動去重操作
add() 添加到set中, 相當於list中的append
update(可迭代對象), 類似於list中的extend, 將可迭代的最小單元add到set中
"""
a_set = {1,3,5,7,3}
print(a_set) # {1, 3, 5, 7} 去重操作
b_set = set()
c_set = {} # 指的是空的字典,並不是集合set類型
a_set.add(11)
a_set.update("abcd")
print(a_set)
"""
set中的刪除
remove(obj), set無序,只能根據obj進行刪除,找不到obj的話異常
pop(), 因為set無序, 刪除的並不是最後一個,而是隨機的刪除一個元素
discard(), 元素存在刪除, 不存在則不會發生異常
"""
a_set.remove(1)
a_set.pop()
a_set.discard(111) # set中的discard安全一點,不會異常
print(a_set)
"""
多個set集合的操作, 交集並集主要用在多個set的去重
& -> 交集
| -> 並集
"""
set1 = {1,2,3,4}
set2 = {3,4,5,6}
print(set1 & set2)
print(set1 | set2)
# 去重的話講list轉換為set的話直接迅速, 不需要手動判斷
a_list = [1, 3, 4, 3, 4, 5, 6]
print(set(a_list))
# 利用set集合的特點,進行多個list的去重, 將每一個list轉換為set求交集即可,一行程式碼搞定
b_list = [1, 2, 3, 4]
c_list = [3, 4, 5]
print(set(b_list) | set(c_list))
"""
字元串, list, 元組, 字典等運算符公共方法
"""
print([1,2] + [3,4]) # [1, 2, 3, 4]
print([1,2] * 4) # [1, 2, 1, 2, 1, 2, 1, 2]
print(3 in [1,2,3]) # True
print(3 not in [1,2,3]) # False