python教程_小白入門13
標簽: python基礎教程學習手記 python
python教程_小白入門13/2020/08/20
學習目標
文章目錄
P88 列表推導式的使用
# 列表推導式作用是使用簡單的語法創建一個列表
# nums = [i for i in range(10)]
# print(nums) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# nums = []
# for i in range(10):
# nums.append(i)
# print(nums) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 打印9以內所有的偶數
# x = [i for i in range(10) if i % 2 == 0]
# print(x) # [0, 2, 4, 6, 8]
# 打印9以內的所有奇數--因為i%2是偶數的時候是0,其他的情況都是1,i在10以內,并且i不能魔于2的情況就是奇數
# x = [i for i in range(10) if i % 2]
# print(x) # [1, 3, 5, 7, 9]
# 其實就相當于直角坐標系里的坐標,橫坐標有一個范圍,縱坐標有一個范圍,在坐標系里是一個矩形
# point是一個列表,這個列表里的元素都是元組
points = [(x, y) for x in range(5, 9) for y in range(10, 20)]
print(points)
# [(5, 10), (5, 11), (5, 12), (5, 13), (5, 14), (5, 15), (5, 16), (5, 17), (5, 18), (5, 19), (6, 10), (6, 11), (6, 12), (6, 13), (6, 14), (6, 15), 。。。。。。。。。。
P89 列表推導式的練習
# 請寫出一段python代碼實現分組一個list里邊的元素,比如[1,2,3,4,5,6,.....100]變成[1,2,3][4,5,6][7,8,9]....
m = [i for i in range(1, 101)]
print(m)
# 實際上相當于一個切片的操作
# m[0,3] j 0
# m[3,6] j 3
# m[6,9] j 6
n = [m[j:j + 3] for j in range(0, 100 ,3)]
print(n) #[[1, 2, 3], [2, 3, 4], [3, 4, 5], [4, 5, 6], [5, 6, 7], [6, 7, 8], [7, 8, 9], [8, 9, 10], [9, 10, 11], [10, 11, 12],
P90 深拷貝和淺拷貝介紹
# 淺復制
import copy
# nums = [1, 2, 3, 4, 5, 6]
# nums1 = nums # 深復制,淺復制都不是,這只是個賦值 賦值是指向
#
# nums2 = nums.copy() # 淺拷貝,兩個內容一摸一樣,但不是同一個對象,指向的不是同一個位置
#
# nums3 = copy.coppy(nums) # 和nums.copy()功能一致,都是淺拷貝
# 深拷貝,只能使用copy模塊實現
words = ['hello', 'good', [1, 6, 7], 'ok']
words1 = words.copy() # 淺拷貝
words2 = copy.deepcopy(words) # 深拷貝
# 淺拷貝可以只認為拷貝了一層,當層次又深了之后,淺層次的是直接復制,深層次的是深拷貝
# 深拷貝是 全部拷貝過來,不管你有多少層,深拷貝的內容一點不受影響
words[0] = '你好'
print(words) # ['你好', 'good', [1, 6, 7], 'ok']
print(words1) # ['hello', 'good', [1, 6, 7], 'ok']
print(words2) # ['hello', 'good', [1, 6, 7], 'ok']
words[2][0] = 99
print(words) # ['你好', 'good', [99, 6, 7], 'ok']
print(words1) # ['hello', 'good', [99, 6, 7], 'ok']
print(words2) # ['hello', 'good', [1, 6, 7], 'ok']
拷貝的流程
P91 元組的使用
# 元組和列表很像,都是用來保存多個數據
# 使用一對小括號,()來表示一個元組
# 元組和列表的區別就在于,列表是可變的,而元組是不可變的
words = ['hello', 'yes', 'good', 'hi']
nums = (9, 5, 6, 4, 7, 8, 5)
# 和列表一樣,元組也是一個有序的存儲數據的容器
# 可以通過下邊來獲取元素
print(nums[4]) # 7
# 但是不能 對元組進行修改,一修改就會報錯,不能改
print(nums.index(5)) # 1 有兩個相同元素打印前邊一個元素的位置下標
print(nums.index(8)) # 5
print(nums.count(5)) # 2 5元素出現的次數
# 特殊情況,如何表示只有一個元素的元組呢?如果元組里只有一個元素,要再后邊加,
# ages = (18)
# print(type(ages)) # <class 'int'>
ages = (18,)
print(type(ages)) # <class 'tuple'>
# tuple內置類
print(tuple('hello')) # ('h', 'e', 'l', 'l', 'o')
# 怎樣把列表轉換為元組?元組轉換為列表?
# tuple list set 都是這樣使用的
print(tuple(words)) # ('hello', 'yes', 'good', 'hi')
print(list(nums)) # [9, 5, 6, 4, 7, 8, 5]
height = ('190', '156', '177', '181')
print("*".join(height)) # 190*156*177*181
# 元組也可以遍歷
for i in nums:
print(i, end='-')
# 9-5-6-4-7-8-5-
print()
j = 0
while j < len(nums):
print(nums[j], end='#')
j += 1
# 9#5#6#4#7#8#5#
P92 字典的基本使用
# 列表可以存儲任意數據類型,但是一般情況下,我們都存儲單一數據類型
name = ['zhangsan', 'lisi', 'wangwu']
scores = [100, 98, 99, 97]
# 這個列表里的每一個勻速到底代表的是什么?
# 列表只能存儲值,但是無法對值進行描述
person = ['zhangsan', 18, 56, 44, 55, 77]
# 字典不僅可以保存值,而且還能對值進行描述
# 使用大括號來表示一個字典,不僅有值value,還有值的描述key
# key和value之間使用冒號來連接,多個鍵值對之間使用逗號來連接
person = {'name': 'zhangsan',
'age': 18,
'math': 98,
'English': 95,
'height': 180,
'weight': 150
}
P93 字典使用注意事項
person = {'name': 'zhangsan',
'age': 18,
'math': 98,
'English': 95,
'height': 180,
'height': 1000,
'isPass': True, # 值可以是布爾值
'hobbies': ['唱', '跳', "rap", '籃球'], # 也可以是列表
4: 'good' # key只能是不可變數據類型
}
# 1.字典里的key不允許重復,如果key重復了,后一個key對應的值會覆蓋前一個的值
print(person) # {'name': 'zhangsan', 'age': 18, 'math': 98, 'English': 95, 'height': 1000}
# 2.字典里的value可以實任意數據類型,但是key只能使用不可變數據類型,一般使用字符串
P94 從字典里獲取數據
# 字典的增刪改查
person = {'name': 'zhangsan',
'age': 18,
'math': 98,
'English': 95,
'height': 180,
'isPass': True, # 值可以是布爾值
'x': 'y',
}
# 1. 查找數據(數據在保存的時候是無序的,無法通過下標來獲取數據)
print(person['name']) # zhangsan 使用key獲取到對應的value,注意引號不能省略
x = 'age'
print(person[x]) # 18
# 通過value來查找key是不行的,因為value可以重復,而key不會重復
# print(person['score']) # 如果要查找的key不存在,會報錯
# 需求:獲取一個不存在的key時,不報錯,如果這個key不存在,就使用默認值
# print(person.get('score')) # None 使用字典的get方法,如果key不存在,會默認返回None,而不會報錯
# 如果獲取不到value,使用給定的默認值
print(person.get('gender','female')) # female
print(person.get('name', 'lisi')) # zhangsan,如果能找到,就不適用默認值
print(person) # {'name': 'zhangsan', 'age': 18, 'math': 98, 'English': 95, 'height': 180, 'isPass': True, 'x': 'y'}
# get方法只是獲取字典里邊的東西,獲取不到就返回默認值,不會對原字典產生任何影響,不會增加減少
智能推薦
電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!
Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...
requests實現全自動PPT模板
http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...
Linux C系統編程-線程互斥鎖(四)
互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...
統計學習方法 - 樸素貝葉斯
引入問題:一機器在良好狀態生產合格產品幾率是 90%,在故障狀態生產合格產品幾率是 30%,機器良好的概率是 75%。若一日第一件產品是合格品,那么此日機器良好的概率是多少。 貝葉斯模型 生成模型與判別模型 判別模型,即要判斷這個東西到底是哪一類,也就是要求y,那就用給定的x去預測。 生成模型,是要生成一個模型,那就是誰根據什么生成了模型,誰就是類別y,根據的內容就是x 以上述例子,判斷一個生產出...
猜你喜歡
styled-components —— React 中的 CSS 最佳實踐
https://zhuanlan.zhihu.com/p/29344146 Styled-components 是目前 React 樣式方案中最受關注的一種,它既具備了 css-in-js 的模塊化與參數化優點,又完全使用CSS的書寫習慣,不會引起額外的學習成本。本文是 styled-components 作者之一 Max Stoiber 所寫,首先總結了前端組件化樣式中的最佳實踐原則,然后在此基...
19.vue中封裝echarts組件
19.vue中封裝echarts組件 1.效果圖 2.echarts組件 3.使用組件 按照組件格式整理好數據格式 傳入組件 home.vue 4.接口返回數據格式...
【一只蒟蒻的刷題歷程】【藍橋杯】歷屆試題 九宮重排 (八數碼問題:BFS+集合set)
資源限制 時間限制:1.0s 內存限制:256.0MB 問題描述 如下面第一個圖的九宮格中,放著 1~8 的數字卡片,還有一個格子空著。與空格子相鄰的格子中的卡片可以移動到空格中。經過若干次移動,可以形成第二個圖所示的局面。 我們把第一個圖的局面記為:12345678. 把第二個圖的局面記為:123.46758 顯然是按從上到下,從左到右的順序記錄數字,空格記為句點。 本題目的任務是已知九宮的初態...