python學習——序列

Python支持一種數據結構的基本概念,名爲容器。容器基本上就是可包含其他對象的對象。兩種主要的容器是:

  • 序列(列表與元組)
  • 映射(字典)

在序列中,每個元素都有編號,而在映射中,每個元素都有名稱(也叫鍵)。
還有一種既不是序列也不是映射的容器:集合(set)

一、序列

1.1通用的序列操作:

索引、切片、相加、相乘和成員資格檢查。
其中列表的形式如[1, 2, 3]
元組的形式如

1.1.1索引

序列中的所有元素都有編號——從0開始遞增。
可以使用索引來獲取元素,適用於所有序列

# 序列
a = ['leo-zu', 23]
b = ['leopard', 22]
database = [a, b]
print(database[0][0])
print(a[1])
# -------------
# leo-zu
# 23

1.1.2切片

使用切片來訪問特定範圍內的元素。因此,可以使用兩個索引,並用冒號分隔:

# 切片
a = 'leo-zu'
# 其中的第一個索引是包含第一個元素的編號
# 第二個索引是切片後的下一個元素的編號
# 第三個索引是步長,默認爲1
print(a[4:6])
b = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(b[4:9])
print(b[4:9:2]) # 步長爲2
# -----------------------------------
# zu
# [5, 6, 7, 8, 9]
# [5, 7, 9]

1.1.3序列相加

可使用加法運算符來拼接序列。但是不能拼接列表和字符串,雖然他們都是序列。

一般而言,不能拼接不同類型的序列

# 序列相加
a = [1, 2, 3, 4]
b = [5, 6, 7, 8, 9]
c = a + b
print(c)
# -----------------------------------
# [1, 2, 3, 4, 5, 6, 7, 8, 9]

但是如果拼接字符串和列表,就會報錯。

a = [1, 2, 3, 4]
b = 'leo-zu'
c = a + b
print(c)
# -------------------
# TypeError: can only concatenate list (not "str") to list

1.1.4乘法

將序列與數x相乘時,將重複這個序列x次來創建一個新的序列。

# 相乘
a = [1, 2]
b = 5
d = 'leo-zu' * b
c = a * b
print(c)
print(d)
# -----------------------------------
# [1, 2, 1, 2, 1, 2, 1, 2, 1, 2]
# leo-zuleo-zuleo-zuleo-zuleo-zu

None、空列表和初始化

空列表是使用不包含任何內容的兩個方括號[]表示
如果想要創建一個可包含10個元素的列表,但不包含任何有用的內容:[0] * 10
如果你想表示“什麼都沒有”的值,可以使用None,比如 [None] * 10

1.1.5成員資格

檢查特定的值是否包含在序列中,可使用運算符in。它檢查是否滿足指定的條件,並返回相應的值:滿足時返回true。

# 成員資格
a = [1, 2]
b = 0 in a
c = 2 in a
print(b)
print(c)
# ----------
# False
# True

# 成員資格
database = [
    ['leo-zu', '123'],
    ['leopard', '321']
]
username = input('UserName:')
password = input('password:')
if [username, password] in database:
    print("Access granted")
else:
    print("Failed")
# --------------------------------------
# UserName:leo-zu
# password:123
# Access granted

1.2列表

1.2.1函數list
由於不能像修改列表那樣修改字符串,可以使用list函數。

# 函數list,將字符串轉換爲字符列表
a = list('leo-zu')
print(a)
# -------------------------------
# ['l', 'e', 'o', '-', 'z', 'u']

可將任何序列(不僅僅是字符串)作爲ilist的參數
tips:要將字符列表轉換爲字符串,可以使用下面的表達式’’.join(somelist)。其中somelist是要轉換的列表。

# ''.join(somelist),將字符列表轉換爲字符串
a = list('leo-zu')
b = ''.join(a)
print(b)
# -------------------------------
# leo-zu

下面介紹一下修改列表的方式:給元素賦值、刪除元素、給切片賦值以及使用列表的方法。

# 修改列表的方式
a = list('leopard')

# 給元素賦值
a[3] = '-'
print(a)

# 刪除元素,使用del語句
del a[6]
print(a)

# 給切片賦值,給列表切片賦值,必須要是列表
a[4:] = list('zu')
print(a)
# -------------------------------
# ['l', 'e', 'o', '-', 'a', 'r', 'd']
# ['l', 'e', 'o', '-', 'a', 'r']
# ['l', 'e', 'o', '-', 'z', 'u']

列表方法

# 修改列表的方式
a = list('leopard')
print('原始序列:', a)

# 1、append,用於將一個對象附加到列表末尾
a.append('a')
print('append:', a)

# 2、count,計算指定元素在列表中出現了多少次
d = a.count('a')
print('count:', d)

# 3、copy,賦值列表
b = a.copy()
c = a  # 常規賦值只是將另一個名稱關聯到列表
del a[7]  # 刪除列表a的最後一個元素
print('原始序列:', a)
print('copy:', b)  # copy賦值不會受到影響
print('常規賦值:', c)  # 常規賦值,會受到影響

# 4、extend,可以同時將多個值附加到列表末尾
# 爲此可將這些值組成的序列作爲參供給方法extend
e = [1, 2, 3]
e.extend(a)
print('extend:', e)

# 5、index,在列表中查找指定值第一次出現的索引
print('index:', a.index('a'))

# 6、insert,將一個對象插入列表
a.insert(7, '-')
print('insert:', a)

# 7、pop,從列表中刪除一個元素(默認爲最後一個元素),並返回這一元素
f = a.pop()
print('pop:', f)

# 8、remove,刪除第一個爲指定值的元素
a.append('a')
a.remove('a')
print('remove:', a)

# 9、reverse,按相反的順序排列列表中的元素
a.reverse()
print('reverse:', a)

# 10、sort,對列表就地排序
a.sort()
print('sort:', a)

# 11、clear,用於清空列表的內容
a.clear()
print('clear:', a)
# -------------------------------
# 原始序列: ['l', 'e', 'o', 'p', 'a', 'r', 'd']
# append: ['l', 'e', 'o', 'p', 'a', 'r', 'd', 'a']
# count: 2
# 原始序列: ['l', 'e', 'o', 'p', 'a', 'r', 'd']
# copy: ['l', 'e', 'o', 'p', 'a', 'r', 'd', 'a']
# 常規賦值: ['l', 'e', 'o', 'p', 'a', 'r', 'd']
# extend: [1, 2, 3, 'l', 'e', 'o', 'p', 'a', 'r', 'd']
# index: 4
# insert: ['l', 'e', 'o', 'p', 'a', 'r', 'd', '-']
# pop: -
# remove: ['l', 'e', 'o', 'p', 'r', 'd', 'a']
# reverse: ['a', 'd', 'r', 'p', 'o', 'e', 'l']
# sort: ['a', 'd', 'e', 'l', 'o', 'p', 'r']
# clear: []

1.3元組

不可修改的序列。只要將一些值用逗號分隔,就能自動創建一個元組。

# 元組的創建
a = 1, 2, 3
b = (1, 2, 3)
c = ()  # 空元組
d = (4,)  # 一個值的元組,必須要加逗號
print('a:', a)
print('b:', b)
print('空元組c:', c)
print('一個值的元組d:', d)
# ---------------
# a: (1, 2, 3)
# b: (1, 2, 3)
# 空元組c: ()
# 一個值的元組d: (4,)

下面還有一個函數tuple,可以將一個序列轉換成元組。

# 將序列轉換爲元組
a = tuple('abc')
print(a)
# ---------------
# ('a', 'b', 'c')
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章