干貨 | Python學習筆記(一)列表
大家好,我是木木~
今天是有關Python的學習筆記,核心內容為List列表的操作!
No.1
數據類型概述
Python標準數據類型:Numbers數字,String字符串,List列表,Tuple元祖,Dici字典
# Numbers數字分為:int整型,long長整型,float浮點型,complex復數
x1 = 10
x2 = 10.0
print(type(x1),type(x2))#輸出<class 'int'> <class 'float'>
# print()函數,用于輸出/打印內容
# type()函數,用于查看數據類型
# String字符串由數字、字母、下劃線組成的一串字符,用于表示文本的數據類型
x3 = "hello world!"
print(x3,type(x3))
print('hehe')
print("hahaha")
print('''what is this?
it`s a cat.''')
# 一定用英文標點符號,單引號('') 雙引號("")一樣,三引號(''''''或"""""")可以表示多行字符串
#輸出hello world! <class 'str'>
# hehe
# hahaha
# what is this?
# it`s a cat.
# bool布爾型:True,False,用于做判斷
x4 = True
print(x4,type(x4))
print(True == 1)
print(False == 0)
print(True * 10)
# True實際值是1,False實際值是0
# 輸出
# True <class 'bool'>
# True
# True
# 10
# List列表,支持字符,數字,字符串以包含列表(即嵌套),用[]標識,有序對象
x5 = [1,'a',2.4,502.2,[1,2,3]]
print(x5,type(x5))
# 輸出[1, 'a', 2.4, 502.2, [1, 2, 3]] <class 'list'>
# Tuple元組,用()標識,不能二次賦值,可以理解成不可變的列表(只讀列表),有序對象
x6 = (1,2,3,'hello')
print(x6,type(x6))
# 輸出(1, 2, 3, 'hello') <class 'tuple'>
# Dict字典,用{}標識,由索引(key)和它對應的值value組成,無序對象
x7 = {"name":"fatbird", "city":"shanghai", "tel":10001000}
print(x7,type(x7))
輸出:{'tel': 10001000, 'name': 'fatbird', 'city': 'shanghai'} <class 'dict'>
# 數值類型轉換方法 **這里暫時只針對int,float,str三者,list/tuple/dict后面課程講
var1 = 10.8
var2 = int(var1)
print(var1,type(var1))
print(var2,type(var2))
print('----------')
# int(x)函數:將x轉為整數,如果是四舍五入則是round(x)函數
var1 = 10
var2 = float(var1)
print(var1,type(var1))
print(var2,type(var2))
print('----------')
# float(x)函數:將x轉為浮點數
var1 = 10.0
var2 = str(var1)
var3 = float(var2)
print(var1,type(var1))
print(var2,type(var2))
print(var3,type(var3))
print('----------')
# str(x)函數:將x轉為字符串
# 輸出:
# 10.8 <class 'float'>
# 10 <class 'int'>
# ----------
# 10 <class 'int'>
# 10.0 <class 'float'>
# ----------
# 10.0 <class 'float'>
# 10.0 <class 'str'>
# 10.0 <class 'float'>
# ----------
No.2
序列通用操作
序列分類:可變序列list,不可變序列tuple、str
# 判斷值是否屬于序列
lst = [1,2,3,4,5,6]
a,b = 1,10
print(a in lst) # a 在 lst 序列中 , 如果 x 在 y 序列中返回 True。輸出True
print(b not in lst) # b 不在 lst 序列中 , 如果 x 不在 y 序列中返回 True。輸出True
# 序列鏈接與重復
lst1 = [1,2,3]
lst2 = ['a','b','c']
print(lst1+lst2) # "+":序列的鏈接
print(lst1*3,lst2*2) # "*":序列重復
# 輸出
# [1, 2, 3, 'a', 'b', 'c']
# [1, 2, 3, 1, 2, 3, 1, 2, 3] ['a', 'b', 'c', 'a', 'b', 'c']
# 下標索引
lst = [1,2,3,4,5,6,7,8,9,0]
print(lst[0],lst[2],lst[9]) # 索引從0開始,eg lst[2]中,下標索引是2,指向lst的第3個值
print(lst[-1]) # 索引-1代表最后一個值
#print(lst[10]) # 這里一共有10個值,所以最大索引是9
# 輸出
# 1 3 0
# 0
# 切片
lst = [1,2,3,4,5,6,7,8,9,0]
print(lst[2:5]) # 切片可以理解成列表的值區間,且是一個左閉右開區間,這里lst[2:5]代表的區間是:索引2的值 - 索引4的值
print(lst[:5]) # 左邊無索引,代表從索引0開始
print(lst[4:]) # 右邊無索引,代表以最后一個值結束
print(lst[5:-1]) # 索引5的值 - 倒數第二個值
# 輸出
# [3, 4, 5]
# [1, 2, 3, 4, 5]
# [5, 6, 7, 8, 9, 0]
# [6, 7, 8, 9]
# 步長
lst = [1,2,3,4,5,6,7,8,9,0]
print(lst[0:5:2]) # List[i:j:n]代表:索引i - 索引j,以n為步長
print(lst[::2]) # 按照2為步長,從第一個值開始截取lst數據
print(lst[1::2]) # 按照2為步長,從第二個值開始截取lst數據
# 輸出
# [1, 3, 5]
# [1, 3, 5, 7, 9]
# [2, 4, 6, 8, 0]
# 序列的基本內置全局函數
lst = [1,2,3,4,5,6,7,8,9,0]
print(len(lst)) # 列表元素個數10
print(max(lst),min(lst),sum(lst)) # 返回列表的最大值、最小值、求和,這三個函數都只針對數字的list,9 0 45
print(lst.index(3)) # .index(obj)方法:從列表中找出某個值第一個匹配項的索引位置
lst = [1,1,2,3,3,4,4,4,4,5,6]
print(lst.count(4)) # .count(obj)方法:計算值的出現次數,4
No.3
列表list常用操作
# 列表的特征
lst1 = [1,2,3,'a','b','c',[1,2,3]]
# 可包含任意類型的對象:數值、字符串、列表等
lst2 = [143,56,894,67,43]
print(lst2[0],lst2[4],lst2[-1])
# 通過下標索引訪問序列中的值 → 序列的順序是不能改變的,通過索引來定位列表的元素,143 43 43
lst3 = [1,2,3]
lst3 = lst3 * 3
print(lst3)
# 可隨意變換列表長度,相當于隨意指定新的列表,[1, 2, 3, 1, 2, 3, 1, 2, 3]
lst4 = [1,2,['a','b']]
# 可嵌套
lst5 = [100,101,102]
lst5[0] = 10
print(lst5)
# 可原位改變[10, 101, 102]
# 列表與生成器
print(range(5),type(range(5)))
# range()是生成器,指向了一個范圍
# range(5)代表指向了0,1,2,3,4這幾個值
# range(2,5)代表指向了2,3,4這幾個值,注意這里不是使用:
# range(0,10,2)代表指向了0,2,4,6,8這幾個值,最后的2代表步長
#輸出:range(0, 5) <class 'range'>
lst = list(range(5))
print(lst)
# 通過list()函數生成列表
# 輸出:[0, 1, 2, 3, 4]
# 可變列表list常用操作 - 添加元素
lst = list(range(10))
lst.append('hello')
print(lst)#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'hello']
# list.append() 添加元素
lst.append(['a','b','c'])
print(lst)#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'hello', ['a', 'b', 'c']]
lst.extend(['a','b','c'])
print(lst)#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'hello', ['a', 'b', 'c'], 'a', 'b', 'c']
# 添加多個元素用.extend()方法:用新列表擴展原來的列表,注意和append()方法的區別
# 可變列表list常用操作 - 刪除元素
lst = ['Jack','Jack','Tom','Tracy','Alex','White']
lst.remove('Jack')
print(lst)#['Jack', 'Tom', 'Tracy', 'Alex', 'White']
# .remove方法:移除列表中某個值的第一個匹配項
del lst[3:5]
print(lst)#['Jack', 'Tom', 'Tracy']
# del語句:刪除list的相應索引值
lst.clear()
print(lst)#[]
# 移除所有值
# 可變列表list常用操作 - 插入元素
lst = list(range(10))
print(lst)#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
lst.insert(3,'a')
print(lst)#[0, 1, 2, 'a', 3, 4, 5, 6, 7, 8, 9]
# x.insert(i,m)方法:在索引i處插入m,這里索引3代表第四個值
lst.insert(5,[1,2,3])
print(lst)#[0, 1, 2, 'a', 3, [1, 2, 3], 4, 5, 6, 7, 8, 9]
# 插入一個列表元素
# 可變列表list常用操作 - 復制
lst = list(range(10))
lst1 = lst
lst1[2] = 'hello'
print(lst,lst1)#[0, 1, 'hello', 3, 4, 5, 6, 7, 8, 9] [0, 1, 'hello', 3, 4, 5, 6, 7, 8, 9]
# lst,lst1指向同一個列表
lst = list(range(10))
lst2 = lst.copy()
lst2[2] = 'hello'
print(lst,lst2)#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 'hello', 3, 4, 5, 6, 7, 8, 9]
# list.copy()方法:復制一個新的列表,lst,lst2指向兩個列表(雖然兩個列表值相同)
# 可變列表list常用操作 - 排序
lst1 = [12,45,32,98,45,66,3]
lst2 = ["asd", "cxv", "ghv"]
lst1.sort()
lst2.sort()
print(lst1,lst2)#[3, 12, 32, 45, 45, 66, 98] ['asd', 'cxv', 'ghv']
# 默認升序排序/字母順序
lst1.sort(reverse=True)
lst2.sort(reverse=True)
print(lst1,lst2)#[98, 66, 45, 45, 32, 12, 3] ['ghv', 'cxv', 'asd']
# 參數reverse:反向排序,針對數字
lst3 = sorted(lst1)
lst3.append('hello')
print(lst1,lst3)#[98, 66, 45, 45, 32, 12, 3] [3, 12, 32, 45, 45, 66, 98, 'hello']
# 函數sorted():排序并復制
今天就到這里,下次繼續哦~
我不僅僅是一個碼
客官!在看一下唄~
智能推薦
深度學習干貨學習(2)—— triplet loss
一、Triplet結構: triplet loss是一種比較好理解的loss,triplet是指的是三元組:Anchor、Positive、Negative: 整個訓練過程是: 首先從訓練集中隨機選一個樣本,稱為Anchor(記為x_a)。 然后再隨機選取一個和Anchor屬于同一類的樣本,稱為Positive (記為x_p) 最后再隨機選取一個和Anchor屬于不同類的樣本,稱為Negative...
干貨 | Elasticsearch 趨勢科技實戰分享筆記
少啰嗦,直接看東西。 1、Elasticsearch 索引的設計 1.1 單一索引還是基于時間的索引? 單一索引的問題: 1)不能更新Mapping。 比如:主分片數不可以修改(除非reindex)。 2)無法靈活、快速地擴展。 3)更適合固定、小型數據集。 基于時間的索引面臨的問題: 1)如何確定間隔? 數據量 變更頻率 默認嘗試每周為單位分割——建議 2)如何實施? 索...
工程里學筆記(1)干貨!!!
工程力學筆記(1)!!! 斜體樣式工程力學是理工類專業必須的一門學科。但是學習起來卻不是那么容易(別問我是怎么知道的),不少人在這里掛過科,所以,特把自己學習時的一些筆記發布出來,這只是一小部分,后續會有更新。希望大家多提寶貴意見! 一、緒論 這一部分主要是一些專業名詞和解釋,對于初學的同學,可以根據需要查閱(不用死記硬背) 說明:緒論中大部分出現的名詞,在后續對應的專門章節中,都會出現,所以現在...
Java多線程總結筆記面試干貨
一、線程的創建方式 1、繼承Thread類(不推薦):只能被單繼承,不推薦使用 2、實現Runable的接口(推薦):不需要返回值時,推薦使用 3、實現Callable接口(JDK1.5): 核心方法叫call()方法(相當于run()),有返回值,推薦使用 4、線程池:通過Executor 的工具類可以創建三種類型的普通線程池:固定大小的線程池、單線程池、緩存線程池 問題:線程調用start方法...
猜你喜歡
freemarker + ItextRender 根據模板生成PDF文件
1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...
電腦空間不夠了?教你一個小秒招快速清理 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_...