串列(list)與元組(tuple)
串列的格式
>- [資料1,資料2,資料3,資料4,......]
>- 串列可以存盤多個資料,資料之間的逗號以英文分割而且可以資料是不同型別的資料,串列是可變資料型別,
>- 空串列 list_data = https://www.cnblogs.com/daguo118/p/[] 或者 list_data = list()
- 串列的創建
# 使用 [ ] 直接創建串列
li = [1,2,3,4,"張三","李四"]
# 使用 list() 函式創建串列
li2 = list('123456789')
串列的常規操作
> 串列的作用是?次性存盤多個資料,程式員可以對這些資料進行的操作有:增、刪、改、查等等
訪問串列中的值
- 根據索引訪問串列元素
# 使用索引訪問串列元素的格式為:name_list[i]
name_list = ['張三', '李四', '王五','趙六']
print(name_list[0])
print(name_list[1])
print(name_list[2])
- 根據切片訪問串列元素
# 使用切片訪問串列元素的格式為:name_list[start : end : step]
name_list = ['張三', '李四', '王五','趙六']
print(name_list[0:4:2])
常用內置函式
| 方法 | 描述 |
|---|---|
| append() | 在串列最后添加一個資料 |
| pop() | 從串列中洗掉一個資料,默認洗掉(根據索引)最后一個 |
| sort() | 對資料進行排序,默認從小到大排序 |
| reverse() | 倒置串列 |
| count() | 統計串列中的某一個資料出現的次數 |
| index() | 查找索引 |
| extend() | 把可迭代物件里的資料一個一個追加到串列中 |
| remove() | 洗掉某個資料 |
| insert() | 插入資料 |
| clear() | 清空串列中的資料 |
| copy() | 復制串列 |
# append() 在串列的最后添加一個資料
list_data = https://www.cnblogs.com/daguo118/p/[]
new_data = list_data.append("小明")
print(new_data)
print(list_data)
# pop() 從串列中洗掉一個資料,默認洗掉(根據索引)最后一個,相當于pop(-1)
list_data = [1, 2, 3, 4, 5, 6, 7]
data = list_data.pop()
print(list_data) # [1, 2, 3, 4, 5, 6]
print(data) # 7
list_data.pop(0)
print(list_data) # [2, 3, 4, 5, 6]
# sort(key,reverse) 對資料進行排序,默認從小到大排序,即默認是reverse=False
# 其他資料型別也是可以進行排序的,是根據ascll碼對應數值大小進行排序
list_data = [2, 3, 9, 6, 5, 2, 1]
list_data.sort()
print(list_data) # [1, 2, 2, 3, 5, 6, 9]
list_data.sort(reverse=True)
print(list_data) # [9, 6, 5, 3, 2, 2, 1]
# reverse() 倒置串列
list_data = [1, 3, 2]
list_data.reverse()
print(list_data) # [2, 3, 1]
# count() 統計串列中的某一個資料出現的次數,這里需注意,不僅判斷數值大小,其資料型別也相同才會計數
list_data = [1, 3, 2, 3, 3, 1, 1,'2', '2', '2']
data = https://www.cnblogs.com/daguo118/p/list_data.count(1) # 這里與前面的方法不同,這個會回傳一個值,需要變數來接收
print(list_data) # [1, 3, 2, 3, 3, 1, 1,'2', '2', '2']
print(data) # 3
print(list_data.count(2)) # 1
print(list_data.count('2')) # 3
# index() 查找索引,如果該資料有多個回傳最前面的一個
list_data = https://www.cnblogs.com/daguo118/p/[1, 3, 2, 3, 3, 1, 1,'2', '2', '2']
data = https://www.cnblogs.com/daguo118/p/list_data.index(1) # 這里與前面的方法不同,這個會回傳一個值,需要變數來接收
print(list_data) # [1, 3, 2, 3, 3, 1, 1,'2', '2', '2']
print(data) # 0
# extend(可迭代物件) 把可迭代物件里的資料一個一個追加到串列中
list_data1 = [1, 3, 2]
list_data2 = [4, 5, 6]
list_data3 = "小明"
print(list_data1 + list_data2) # [1, 3, 2, 4, 5, 6]
list_data1.extend(list_data2) # 這里與前面的方法不同,這個會回傳一個值,需要變數來接收
print(list_data1) # [1, 3, 2, 4, 5, 6]
list_data1.extend(list_data3)
print(list_data1) # [1, 3, 2, 4, 5, 6, '小', '明']
# remove() 洗掉某個資料,有多個時洗掉最前面的
list_data = https://www.cnblogs.com/daguo118/p/[1, 2, 3, 2]
list_data.remove(2)
print(list_data) # [1, 3, 2]
# insert(index, object) 插入資料
list_data = [1, 2, 3]
list_data.insert(0, "小明") # 0代表需要插入的位置的索引,”小明“為所需要插入的資料
print(list_data) # ['小明', 1, 2, 3]
# clear() 清空串列中的資料
list_data = https://www.cnblogs.com/daguo118/p/[1, 2, 3]
list_data.clear()
print(list_data) # []
# copy() 復制串列 深復制 淺復制
list_data1 = [1, 2, 3]
list_data2 = list_data1
list_data2.pop()
print(list_data2) # [1, 2]
print(list_data1) # [1, 2]
list_data1 = [1, 2, 3]
list_data2 = list_data1
list_data2 = list_data1.copy()
list_data2.pop()
print(list_data2) # [1, 2]
print(list_data1) # [1, 2, 3]
修改串列元素
>Python 支持通過切片語法給一組元素賦值,在進行這種操作時,如果不指定步長(step 引數),Python 就不要求新賦值的元素個數與原來的元素個數相同;這意味,該操作既可以為串列添加元素,也可以為串列洗掉元素,
- 修改單個元素
name_list = ['張三', '李四', '王五','趙六']
name_list[0] = '阿坤'
print(name_list)
- 修改一組元素
nums = [40, 36, 89, 2, 36, 100, 7]
#修改第 1~4 個元素的值(不包括第4個元素)
nums[1: 4] = [45.25, -77, -52.5]
print(nums)
串列的回圈遍歷
- for回圈
name_list = ['張三', '李四', '王五','趙六']
for i in name_list:
print(i)
- while回圈
i = 0
name_list = ['Tom', 'Lily', 'Rose']
while i < len(name_list):
print(name_list[i])
i += 1
串列的嵌套
> 所謂串列嵌套指的就是?個串列??包含了其他的?串列
list1 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(list1[1]) # [4, 5, 6]
print(list1[1][1]) # 5
元組(tuple)
>- (資料1,資料2,資料3,資料4,......)
>- 不可變資料型別,元組不可修改,串列中的元組也不可以修改,但元組中的串列可以修改,
>- 單個資料的元組,需要定義為tuple_data = https://www.cnblogs.com/daguo118/p/(1, ),需要在后面加一個逗號
>- 空元組 tuple_data = https://www.cnblogs.com/daguo118/p/() 或者 tuple_data = tuple()
元組資料查找
- 根據下標查找
tuple1 = ('aa', 'bb', 'cc', 'bb')
print(tuple1[0])
- index():查找某個資料,如果資料存在回傳對應的下標,否則報錯,語法和串列、字串的index?法相同,
tuple1 = ('aa', 'bb', 'cc', 'bb')
print(tuple1.index('aa')) # 0
- count():統計某個資料在當前元組出現的次數,
tuple1 = ('aa', 'bb', 'cc', 'bb')
print(tuple1.count('bb')) # 1
- len():統計元組中資料的個數,
tuple1 = ('aa', 'bb', 'cc', 'bb')
print(len(tuple1)) # 4
del洗掉
- del,當創建的元組不再使用時,可以通過 del 關鍵字將其洗掉
tup = ("python","yyds")
print(tup)
del tup
print(tup) # NameError: name 'tup' is not defined
元組資料不能修改
# 元組內的直接資料如果修改則?即報錯
# 但是如果元組??有串列,修改串列??的資料則是?持的,
tup = (1, 2, 3, [4, 5])
print(tup, id(tup)) # (1, 2, 3, [4, 5]) 1455401272328
tup[-1].append(6)
print(tup, id(tup)) # (1, 2, 3, [4, 5, 6]) 1455401272328
可變型別與不可變型別
>可變資料型別 :當該資料型別的對應變數的值發生了改變,那么它對應的記憶體地址不發生改變,對于這種資料型別,就稱可變資料型別,
不可變資料型別: 當該資料型別的對應變數的值發生了改變,那么它對應的記憶體地址也會發生改變,對于這種資料型別,就稱不可變資料型別,
"""數值"""
a = 1
print(a, id(a)) # 1 1440395456
a = a + 1
print(a, id(a)) # 2 1440395488
"""字串"""
b = 'a'
print(b, id(b)) # a 2463434018520
b = b.upper()
print(b, id(b)) # A 2463434215920
"""串列"""
li = [1, 2, 3, 4, 5]
print(li, id(li)) # [1, 2, 3, 4, 5] 2464553888584
li.append(6)
print(li, id(li)) # [1, 2, 3, 4, 5, 6] 2464553888584
"""元組"""
tup = (1, 2, 3, [4, 5])
print(tup, id(tup)) # (1, 2, 3, [4, 5]) 2464553829384
tup[-1].append(6)
print(tup, id(tup)) # (1, 2, 3, [4, 5, 6]) 2464553829384
本文來自博客園,作者:大-鍋,轉載請注明原文鏈接:https://www.cnblogs.com/daguo118/p/17311336.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/549838.html
標籤:Python
上一篇:python中如何修改檔案?
