Python列表學習筆記
標簽: Python學習筆記
1. 列表的創建
列表是Python的核心數據類型,可由數值、字符串、布爾值和空值構成。
a = [1,2,'s',None,True]
print(a,type(a))
[1, 2, 's', None, True] <class 'list'>
# 空列表
Null = []
Null
[]
# 列表中包含列表,即嵌套列表
a = [1,2,[2,3,4]]
print(a,type(a))
[1, 2, [2, 3, 4]] <class 'list'>
利用range()來生成列表
range(start,end,step)
- start起始數據
- end結束數據
- step設置步長
- 這三者數據類型都為int(整型),否則報錯
range(1,2,1.1)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-71-8655ac74624c> in <module>()
----> 1 range(1,2,1.1)
TypeError: 'float' object cannot be interpreted as an integer
# 通過range()這個生成器新建一個range對象
r = range(1,9,2)
print(r,type(r))
# 創建的range對象也可以根據索引截取
print(r[:1],type(r[:1]))
# 通過list()函數可將range對象轉為列表
lst = list(r)
print(lst,type(lst))
range(1, 9, 2) <class 'range'>
range(1, 3, 2) <class 'range'>
[1, 3, 5, 7] <class 'list'>
r = range(1,9,2)
lst = list(r)
print(lst,type(lst))
[1, 3, 5, 7] <class 'list'>
2. 列表的連接與復制
列表的連接(與字符串連接相同,都是通過+連接)
lst1 = ['a','b']
lst2 = [2]
lst1 + lst2 # 連接在末尾
['a', 'b', 2]
列表的復制(與字符串復制相同,都是通過*復制)
lst1 * 2
['a', 'b', 'a', 'b']
3. 列表的索引與切片
- 實質上與字符串的索引和切片類似
列表的索引
![]() |
lst = ['a','b',[2,3],5]
# 通過索引提取出2
print('正序索引結果:',lst[2][0],';逆序索引結果:',lst[-2][-2])
正序索引結果: 2 ;逆序索引結果: 2
列表的切片
- 切片是一個左閉右開區間,即左可取到、右不可取到。
# 提取第一個到第三個元素
print(lst[:3])
# 第二個到倒數第二個
print(lst[1:-1]) # 正逆序索引可結合使用
# 還可以通過設置步長進行切片
a = list(range(9))
a[1:6:3]
['a', 'b', [2, 3]]
['b', [2, 3]]
[1, 4]
4. 列表常用操作
查看列表的長度,即列表中有多少個元素
- len(list)
# 嵌套的列表只算一個
lst = ['a','b',[2,3],5]
len(lst)
4
純數值數據列表的計算
- 最大值:max(list)
- 最小值:min(list)
- 總?和:sum(list)
a = list(range(1,9))
print('a的最大值為:{};最小值為:{};總和為:{}'.format(max(a),min(a),sum(a)))
a的最大值為:8;最小值為:1;總和為:36
統計某個值出現的次數
- list.count(值)
lst = ['a','a',12,3,21,4,2,3]
print(type(lst.count('a')),lst.count(12)) # 返回的次數為int型
<class 'int'> 1
查詢某個值第一個匹配項的索引位置(從左到右)
- list.index(值,起始索引,終止索引),返回第一個匹配的索引值
lst = ['a','a',12,3,21,4,2,3]
# 終止索引取不到,如果不存在則會報錯
lst.index(3,1,9)
3
列表的可變性,即列表可通過索引修改元素,或者通過增減元素來改變原列表
修改元素的值
a = ['a', 'b', [2, 3]]
a[-1][0] = 'change'
a
['a', 'b', ['change', 3]]
列表的更新
在列表末尾添加新的一個對象
- list.append()注意每次只能添加一個元素,一定是在列表末尾添加,該方法無返回值,但是會修改原來的列表。
在列表末尾一次性追加另一個序列中的多個值(用新列表擴展原來的列表)- list.extend()注意每次只能添加一個序列,一定是在列表末尾添加,該方法無返回值,但是會修改原來的列表。
注意,extend輸入的是一個序列,append輸入的是一個對象
# append里的參數是一個對象,所以會直接加入列表末尾
lst = [1,2]
lst.append('hello')
lst
[1, 2, 'hello']
# extend里的參數是一個序列,字符串是序列,所以每個字母都會成為單獨對象被加入列表
lst = [1,2]
lst.extend('hello')
lst
[1, 2, 'h', 'e', 'l', 'l', 'o']
lst = [2]
lst.append(['a','b'])
lst
[2, ['a', 'b']]
lst = [2]
lst.extend(['a','b'])
lst
[2, 'a', 'b']
列表排序
列表所有元素反轉
- list.reverse()
sorted(list,key=None, reverse=False)- key:按照一定的規則進行排序,模認無
- reverse:是否反轉序列,默認否
list.sort(key=None, reverse=False)- key:按照一定的規則進行排序,模認無
- reverse:是否反轉序列,默認否
lst = [4,23,25,2,34,23,4,2]
lst.reverse()
lst
[2, 4, 23, 34, 2, 25, 23, 4]
lst = [4,23,25,2,34,23,4,2]
lst.sort()
lst
[2, 2, 4, 4, 23, 23, 25, 34]
lst = [4,23,25,2,34,23,4,2]
sorted(lst)
[2, 2, 4, 4, 23, 23, 25, 34]
指定位置插入元素
- list.insert(插入位置,插入值)
lst = ['a','c']
lst.insert(1,'b')
lst
['a', 'b', 'c']
列表元素的移除
- list.remove()方法:移除列表中某個值的第一個匹配項
- del list[ ]語句:刪除list的相應索引值。注意這里不需要圓括號!
- list.clear():移除所有元素
- list.pop(索引值):不添加則刪除最后一個元素
lst = ['a', 'b', 'c']
lst.remove('a')
lst
['b', 'c']
lst = ['a', 'b', 'c']
del lst[0:2]
lst
['c']
lst = ['a', 'b', 'c']
lst.clear()
lst
[]
lst = ['a', 'b', 'c']
lst.pop(1)
lst
['a', 'c']
判斷元素是否在列表中
- in 和 not in
lst = ['a', 'b', 'c']
print('a' in lst)
print('d' not in lst)
True
True
5. 列表的簡單應用
將8個蘋果,隨機放入3個籃子中
import random
# 8個蘋果分別標記
apples = ['a','b','c','d','e','f','g','h']
# 定義需要放入的籃子
lanzi = [[],[],[]]
# 隨機放入籃子
for i in apples:
# 隨機放入哪一個籃子,用下標索引來模擬放入
c = random.randint(0,2) # 左閉右閉
lanzi[c].append(i)
i = 0
for j in lanzi:
print('lanzi%d的蘋果有%d個'%(i,len(j)))
i += 1
for apple in j:
print('%s'%apple,end='\t')
print('\n')
print('-*-'*10)
lanzi0的蘋果有3個
a f h
-*--*--*--*--*--*--*--*--*--*-
lanzi1的蘋果有1個
b
-*--*--*--*--*--*--*--*--*--*-
lanzi2的蘋果有4個
c d e g
-*--*--*--*--*--*--*--*--*--*-
![]() |
products = [["iphone" ,6888],["MacPro",14800],
["小米6",24991],["Coffee",31],
["Book", 60],["Nike",699]]
print('- '*5,'商品列表','- '*5)
num = 0
for i in products:
print('%d %s %d'%(num,i[0],i[1]))
num += 1
- - - - - 商品列表 - - - - -
0 iphone 6888
1 MacPro 14800
2 小米6 24991
3 Coffee 31
4 Book 60
5 Nike 699
print('根據商品編號,添加購物車')
is_q = input('輸入q退出,輸入其它繼續')
a = []
while is_q != 'q':
i = eval(input('請輸入商品編號'))
a.append([i,products[i][0],products[i][1]])
is_q = input('輸入q退出')
print('- '*5,'商品列表','- '*5)
pay_all = []
for i in a:
print('%d %s %d'%(i[0],i[1],i[2]))
pay_all.append(int(i[2]))
print('您一共消費%d元'%sum(pay_all))
根據商品編號,添加購物車
輸入q退出,輸入其它繼續s
請輸入商品編號2
輸入q退出s
請輸入商品編號1
輸入q退出q
- - - - - 商品列表 - - - - -
2 小米6 24991
1 MacPro 14800
您一共消費39791元
智能推薦
python學習筆記之列表操作
一.列表的定義 二.列表的索引 三.列表的切片 四.列表的增,刪,改,查 刪除列表中遇到的第一個 value 值:shopping.remove("apple") 刪除列表中第 i 個索引值:del shopping[0] 刪...
python學習筆記(二)列表和元組
一、列表格式 列表也可稱為數組,與c語言中的數組一樣,列表也是由[]和,組成,如: mumber = [1,2,3,4,5] 這就定義了一個由五個整形組成的一個列表。 但是,python的列表不會如此簡單,它可以說是一個大雜燴,為何這樣說呢? member = [‘Jacyn’,1,2,3.00,[1,2,3]] 這樣一個包含了字符串,整形,浮點型,甚至包含了一個列表的列表...
干貨 | Python學習筆記(一)列表
大家好,我是木木~ 今天是有關Python的學習筆記,核心內容為List列表的操作! No.1 數據類型概述 Python標準數據類型:Numbers數字,String字符串,List列表,Tuple元祖,Dici字典 No.2 序列通用操作 序列分類:可變序列list,不可變序列tuple、str No.3 列表list常用操作 今天就到這里,下次繼續哦~ 我不僅僅是一個碼 客官!在...
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_...
統計學習方法 - 樸素貝葉斯
引入問題:一機器在良好狀態生產合格產品幾率是 90%,在故障狀態生產合格產品幾率是 30%,機器良好的概率是 75%。若一日第一件產品是合格品,那么此日機器良好的概率是多少。 貝葉斯模型 生成模型與判別模型 判別模型,即要判斷這個東西到底是哪一類,也就是要求y,那就用給定的x去預測。 生成模型,是要生成一個模型,那就是誰根據什么生成了模型,誰就是類別y,根據的內容就是x 以上述例子,判斷一個生產出...