python自學成才之路 列表,元組,集合詳細用法

列表簡介

python列表使用[]表示,它實際上是一個數組,但是和一般數組不同的地方在於它內部封裝了很多很好用的方法(比如append,pop)以及一些特性(比如切片,不可變列表元組),下面來一層層揭開python列表的面紗。

列表crud操作

創建列表

使用[]創建列表並初始化列表

names = ['Jane', 'Peter', 'Bob', 'Tom', 'Kyo']
print(names)
輸出:
['Jane', 'Peter', 'Bob', 'Tom', 'Kyo']

訪問列表元素

1.通過索引訪問列表元素

print(names[0])
print(names[-1])  # 訪問最後一個元素
print(names[-2])  # 訪問倒數第二個元素

2.通過for循環遍歷列表

for name in names:
    print(name)

3.判斷列表中是否存在某個元素

if 'peter' in names:
    print('yes')

修改列表元素

print(names)
names[0] = 'Mike'
print(names)
輸出:
['Jane', 'Peter', 'Bob', 'Tom', 'Kyo']
['Mike', 'Peter', 'Bob', 'Tom', 'Kyo']

添加元素

1.通過append向列表末尾添加元素

names.append('Jimmy')

2.通過insert方法向指定位置添加元素

這種方法會導致該元素後的所有元素向後移動一位

names.insert(3, 'kate')

刪除元素

1.使用del刪除指定位置元素

del names[0]

2.使用pop刪除末尾元素

name = names.pop()
print(name)

3.使用pop彈出指定位置的元素

name = names.pop(3)
print(name)

4.根據值使用remove刪除元素

注意根據值刪除元素,如果存在多個相同的值,只會刪除第一個,如果想要全部刪除需要進行遍歷。

names.remove('kate')
#遍歷刪除元素
names = ['peter','jane','Bob','peter','david','jack']
for name in names:
    if name == 'peter':
        names.remove(name)
print(names)
輸出
['jane', 'Bob', 'david', 'jack']

列表排序

1.列表永久排序,使用sort默認按照首字母升序排序

print(names)
names.sort()
print(names)
輸出:
['Peter', 'Bob', 'Kyo']
['Bob', 'Kyo', 'Peter']

2.傳遞reverse=True參數,按照首字母降序排序

print(names)
names.sort(reverse=True)
print(names)
輸出:
['Bob', 'Kyo', 'Peter']
['Peter', 'Kyo', 'Bob']

3.使用sorted對列表臨時排序

print(names)
print(sorted(names, reverse=True))
print(names)
輸出:
['Peter', 'Kyo', 'Bob']
['Bob', 'Kyo', 'Peter']
['Peter', 'Kyo', 'Bob']

4.反轉列表

使用reverse()方法反轉列表,這個方法只反轉列表,不對列表做排序操作。

print(names)
names.reverse()
print(names)
輸出:
['Peter', 'Kyo', 'Bob']
['Bob', 'Kyo', 'Peter']

數值列表

使用range創建數值列表

1.注意使用range函數只包含起始值不包含末尾值

# 創建1~9的數組
data = range(1, 10)

2.創建數值列表時設置步長

# 創建[2,4,6,8]的列表
data = range(0, 10, 2)

3.結合range創建1~10平方數數值列表

squares = []
for value in range(1, 11, 2):
    squares.append(value**2)

4.max求數值列表最大值

print(max(squares))

5.min求數值列表最小值

print(min(squares))

6.sum求數值列表和

print(sum(squares))

列表解析

使用列表解析實現一行代碼創建數值列表

squares = [value ** 2 for value in range(1, 11, 2)]
等價於
squares = []
for value in range(1, 11, 2):
    squares.append(value**2)

切片

切片,即通過起始和結束索引來截取列表的一部分,使用切片的時候會包含起始值不包含末尾值。
1.輸出索引爲0,1的兩個元素

print(names[0:2])

2.輸出第一個到底倒數第三個元素

print(names[0:-2])

3.如果沒有指定起始索引,默認從0開始

print(names[:-2])

4.如果沒有指定末尾索引,默認切片爲起始索引到後面所有元素

print(names[0:])

5.輸出倒數第二個元素到最後一個元素

print(names[-2:])

6.通過切片的方式實現複製操作

names2 = names[:]
names2.append('sum')
print(names)
print(names2)
輸出:
['Bob', 'Kyo', 'Peter']
['Bob', 'Kyo', 'Peter', 'sum']

元組

元組是不可變的列表,在表現形式上和列表不同,列表使用[]來表示,元組使用()來表示。

tupleTest = (1, 3, 4)

雖然元組不可變,但是元組裏面的單個元素卻是可變的,比如像下面的這個元組,裏面的元素都是列表,可以隨意改變其中某個列表中元素的值。

tupleTest = ([1, 2, 3], [4, 5, 6])
print(tupleTest)
tupleTest[0][1] = 3
print(tupleTest)
輸出:
([1, 2, 3], [4, 5, 6])
([1, 3, 3], [4, 5, 6])

元組打包和解包

給元組賦值時可以不用加上(),程序自身會自動做打包操作

t = 1, 2, 3
print(t)
輸出:
(1, 2, 3)

元組也支持解包操作

x, y, z = t
print("x = " + str(x) + ', y = ' + str(y) + ', z' + str(z))
輸出:
x = 1, y = 2, z = 3

集合

集合指的是set集合,他是一種特殊的列表,set集合會對內部的元素做去重處理,也就是set集合不會有重複元素,set集合使用{}表示,爲了和字典區分空的set集合只能使用set()來表示。

basket = {'orange', 'apple', 'pear', 'banana', 'kiwi', 'apple', 'banana'}
print(basket)
輸出:
{'kiwi', 'banana', 'orange', 'pear', 'apple'}

空的set集合使用set()來表示

basket = set()
basket.add('apple')
basket.add('banana')
basket.add('pear')
basket.add('orange')
basket.add('apple')
basket.add('orange')
print(basket)
輸出:
{'banana', 'orange', 'pear', 'apple'}

set集合還支持一些數學上的集合運算

a = set('abracadabra')
print(a)
b = set('alacazam')
print(b)
輸出:
{'r', 'd', 'c', 'a', 'b'}
{'m', 'c', 'a', 'z', 'l'}

差集

a - b : 返回a中有b中沒有的元素

print(a-b)
輸出:
{'b', 'r', 'd'}

並集

a | b : 返回a,b的並集

print(a|b)
輸出:
{'r', 'm', 'd', 'c', 'a', 'b', 'z', 'l'}

交集

a & b : 返回a,b的交集

print(a&b)
輸出:
{'c', 'a'}

並集外的元素

a^b 返回兩個集合並集外的元素

print(a^b)
輸出:
{'b', 'r', 'm', 'z', 'd', 'l'}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章