[ python ] 列表和元組

列表

python內置的一種數據類型是列表:list。list 是一種有序集合,能夠隨時添加和刪除其中的元素。python

 

列表的增刪改查git

1. 增長api

(A) append 在末尾追加元素安全

li = ['xiaofei', 'hkey']
li.append('zhangsan')
print(li)

# 執行結果:
# ['xiaofei', 'hkey', 'zhangsan']

 

(B) insert 在指定索引位置插入元素app

li = ['xiaofei', 'hkey']
li.insert(1, 'zhangsan')	# 注意第一個參數是int類型的索引位置,第二個參數是插入的元素
print(li)

# 執行結果:
# ['xiaofei', 'zhangsan', 'hkey']

 

(C) extend(iterable) 等價於 for i in li.append(i) 在列表的最後追加一個可迭代對象ide

li = ['xiaofei', 'hkey']
li.extend('jack')  # 等價於 for i in 'jack': li.append(i) 參數是一個可迭代對象
print(li)

# 執行結果:
# ['xiaofei', 'hkey', 'j', 'a', 'c', 'k']

 

2. 刪除spa

(A) pop(index=None) 返回刪除的元素,默認刪除最後一個code

li = ['xiaofei', 'hkey']
name = li.pop() # 刪除最後一個元素並獲取到刪除的元素
print(name) # 最後一個元素是 'hkey'
print(li)

# 執行結果:
# hkey
# ['xiaofei']

 

(B) remove(value)    按照元素刪除對象

li = ['xiaofei', 'hkey']

li.remove('xiaofei')    # 參數爲指定的元素,刪除指定元素。
print(li)

# 執行結果:
# ['hkey']

 

(C) clear()     清空列表blog

li = ['xiaofei', 'hkey']
li.clear()
print(li)

# 執行結果:
# []

 

(D) del li 刪除li列表

li = ['xiaofei', 'hkey']
del li  # 直接刪除內存中的 li 列表

print(li)

# 執行結果:
# NameError: name 'li' is not defined

 

(E) del li[:2]    切片刪除

li = ['xiaofei', 'hkey', 'zhangsan']

del li[:2]  # 刪除索引位置 2 以前的元素 [0, 1, 2],不包括 2
print(li)   

# 執行結果:
# ['zhangsan']

 

3. 修改 (對於列表來講,修改就是替換)

li = ['xiaofei', 'hkey', 'zhangsan']

li[2] = 'jay'   # 列表的修改操做,就直接經過索引修改元素內容
print(li)

# 執行結果:
# ['xiaofei', 'hkey', 'jay']

 

4. 查詢

列表的查詢能夠直接經過切片或者索引直接查詢,也可經過for循環遍歷,可以被 for 循環遍歷的類型都是可迭代對象;

 

5. 列表排序

(A) 正向排序:sort()

li = [6, 5, 3, 1, 2, 4]
li.sort()   # 先進行排序,而後在打印列表,正向排序
print(li)

# 執行結果:
# [1, 2, 3, 4, 5, 6]

 

(B) 逆向排序: sort(reverse=True)

li = [6, 5, 3, 1, 2, 4]
li.sort(reverse=True)   # 先進行排序,而後在打印列表,逆向排序
print(li)

# 執行結果:
# [6, 5, 4, 3, 2, 1]

 

(C) 反轉: reverse()

li = [6, 5, 3, 1, 2, 4]
li.reverse()    # 反轉排序,將元素倒過來。
print(li)

# 執行結果:
# [4, 2, 1, 3, 5, 6]

 

6. 公共方法

(A) len() 統計列表共有多少元素

li = ['xiaofei', 'hkey', 'jay']

print(len(li))

# 執行結果:
# 3

 

(B) count() 統計同一個元素,在列表中出現幾回

li = ['xiaofei', 'hkey', 'jay', 'hkey']
print(li.count('hkey')) # 統計同一個元素,在列表中出現幾回。

# 執行結果:
# 2

 

(C)  index() 經過索引查找元素信息

li = ['xiaofei', 'hkey', 'jay', 'hkey']

print(li.index('hkey')) # 經過元素信息查找索引位置,默認獲取第一個匹配到的元素索引

# 執行結果:
# 1

 

元組

tuple 元組,只讀列表,可循環查詢,可切片

由於元組不可變,因此代碼更安全。若是可能,能在元組代替列表的地方就儘可能使用元組;

# 把 xiaofei 修改成大寫

tu = (1,2,3,['xiaofei', 'kk'], 'hkey')

tu[3][0] = tu[3][0].upper()
print(tu)

# 執行結果:
# (1, 2, 3, ['XIAOFEI', 'kk'], 'hkey')

 

元組中的可變類型都是能夠修改的,例如:list類型

 

字符串和列表之間的相互轉換

列表 -- 字符串  join() 方法

字符串 -- 列表  split() 方法

name = ['xiaofei', 'hkey']
print(''.join(name))    # 以空爲分隔符將列表鏈接成字符串類型
print('*'.join(name))   # 以*爲分隔符將列表鏈接成字符串類型

# 執行結果:
# xiaofeihkey
# xiaofei*hkey

 

s1 = 'xiaofei hkey'
print(s1.split())

# 執行結果:
# ['xiaofei', 'hkey']

 

range() 的使用

  第一個參數:int類型

  第二個參數:int類型

  第三個參數:int類型,步長

  遵循取頭不取尾的規則

 

(1)循環次數的控制

# 輸出 3 次 hello, world
for i in range(3):
    print('hello, world')

# 執行結果:
# hello, world
# hello, world
# hello, world

 

(2)數字規則的輸出

# 輸出 10 之內的 奇數 或者 偶數

# 奇數
print(list(range(2, 10, 2)))

# 執行結果:
# [2, 4, 6, 8]


# 偶數
print(list(range(1, 10, 2)))

# 執行結果:
# [1, 3, 5, 7, 9]

 

做業:

1. 有變量 name = 'aleX leNb' 完成以下操做:
    (1)移除 name 變量對應的值兩邊的空格,並輸出處理結果;
    (2)移除 name 變量左邊的 'al' 並輸出結果;
    (3)移除 name 變量右邊的 'Nb',並輸出結果;
    (4)移除 name 變量開頭的 'a' 與最後的 'b',並輸出處理結果;
    (5)判斷 name 變量是否以 'al' 結尾,並輸出結果;
    (6)判斷 name 變量是否以 'Nb' 結尾,並輸出結果;
    (7)將 name 變量對應的值中的第一個'I' 替換成 'p',並輸出結果;
    (8)將 name 變量對應的值中的一個'i'替換成'p',並輸出結果;
    (9)將 name 變量對應的值根據全部的 'I' 分隔,並輸出結果;
    (10)將 name 變量對應的值變大寫,並輸出結果;
    (11)將 name 變量對應的值變小寫,並輸出結果;
    (12)將 name 變量對應的值變小寫,並輸出結果;
    (13)將 name 變量對應的值首字母'a'大寫,並輸出結果;
    (14)判斷 name 變量對應的值字母'i'出現幾回,並輸出結果;
    (15)若是判斷 name 變量對應的值前四位'I'出現幾回,並輸出結果;
    (16)從 name 變量對應的值中找到 'N' 對應的索引(若是找不到則報錯,並輸出結果)
    (17)從 name 變量對應的值中找到 'N' 對應的索引(若是找不到則返回-1)輸出結果;
    (18)從 name 變量對應的值中找到 'X le'對應的索引,並輸出結果;
    (19)請輸出 name 變量對應的值的第 2 個字符;
    (20)請輸出 name 變量對應的值的前 3 個字符;
    (21)請輸出 name 變量對應值的後 2個字符;
    (22)請輸出 name 變量對應的值中 'e'所在索引位置;
        
2. 使用 while 和 for 循環分別打印字符串 s='asdfer'中的每一個元素;
3. 實現一個整數加法計算器;
如:content = input('輸入內容:') # 如用戶輸入 1+1 2+8 5+
4. 計算用戶輸入的內容中有幾個整數;
如 content=input('請輸入內容:') 如;asdfasdf234asdf12sdf

 

name = 'aleX leNb'
# 1. 有變量 name = 'aleX leNb' 完成以下操做:
#     (1)移除 name 變量對應的值兩邊的空格,並輸出處理結果;
print(name.strip())

#     (2)移除 name 變量左邊的 'al' 並輸出結果;
print(name[2:])

#     (3)移除 name 變量右邊的 'Nb',並輸出結果;
print(name[:-3])

#     (4)移除 name 變量開頭的 'a' 與最後的 'b',並輸出處理結果;
print(name[1:-1])

#     (5)判斷 name 變量是否以 'al' 結尾,並輸出結果;
print(name.endswith('al'))

#     (6)判斷 name 變量是否以 'Nb' 結尾,並輸出結果;
print(name.endswith('Nb'))

#     (7)將 name 變量對應的值中的第一個'l' 替換成 'p',並輸出結果;
name1 = name.replace('l', 'p', 1)
print(name1)

#     (8)將 name 變量對應的值中的一個'l'替換成'p',並輸出結果;
name1 = name.replace('i', 'p', 1)

#     (9)將 name 變量對應的值根據全部的 'l' 分隔,並輸出結果;
print(name.split('l'))

#     (10)將 name 變量對應的值變大寫,並輸出結果;
print(name.upper())

#     (11)將 name 變量對應的值變小寫,並輸出結果;
print(name.lower())

#     (12)將 name 變量對應的值變小寫,並輸出結果;
print(name.lower())

#     (13)將 name 變量對應的值首字母'a'大寫,並輸出結果;
print(name.capitalize())

#     (14)判斷 name 變量對應的值字母'l'出現幾回,並輸出結果;
print(name.count('l'))

#     (15)若是判斷 name 變量對應的值前四位'l'出現幾回,並輸出結果;
print(name[0:5].count('l'))

#     (16)從 name 變量對應的值中找到 'N' 對應的索引(若是找不到則報錯,並輸出結果)
print(name.index('N'))

#     (17)從 name 變量對應的值中找到 'N' 對應的索引(若是找不到則返回-1)輸出結果;
print(name.find('N'))

#     (18)從 name 變量對應的值中找到 'X le'對應的索引,並輸出結果;
print(name.find('X le'))

#     (19)請輸出 name 變量對應的值的第 2 個字符;
print(name[1])

#     (20)請輸出 name 變量對應的值的前 3 個字符;
print(name[2])

#     (21)請輸出 name 變量對應值的後 2個字符;
print(name[-2:])

#     (22)請輸出 name 變量對應的值中 'e'所在索引位置;
print(name.find('e'))


2. 使用 whilefor 循環分別打印字符串 s='asdfer'中的每一個元素;

s='asdfer'
for i in s:
    print(i)

ite = iter(s)   # 轉換爲可迭代對象

while True:
    try:
        each = next(ite)    # 使用next循環調用,直到抓到報錯退出.
    except StopIteration:
        break
    print(each)


3. 實現一個整數加法計算器;
如:content = input('輸入內容:') # 如用戶輸入 1+1 2+8 5+

content = input('輸入內容:')
li = content.split('+')
count = 0
if li[-1] == '':
    li.pop()
    for i in li:
        count += int(i)
print(count)



4. 計算用戶輸入的內容中有幾個整數;
如 content=input('請輸入內容:') 如;asdfasdf234asdf12sdf

content=input('請輸入內容:')
count = 0
for i in content:
    if i.isdigit():
        count += 1

print(count)


5. 打印li中全部元素,包括list中的元素,逐個打印出來。

li = [1,2,3,4, 'hkey',[5,6,7,8,'xiaobai'], 'abc']

for i in li:
    if isinstance(i, list):
        for j in i:
            print(j)
        continue
    print(i)
做業答案
相關文章
相關標籤/搜索