列表(list)是Python以及其他语言中最常用到的数据结构之一。Python使用使用中括号 [ ] 来表示列表。
[1,2,'c','dfas',True] 索引和切片。 li = [1,2,3,'af','re',4,'45'] print(li[0]) print(li[3]) print(li[-1])
切片输出的结果也是列表,形成的新列表中的元素的数据类型不变.
li = [1,2,3,'af','re',4,'45']
切片: print(li[0:3]) print(li[2:5]) print(li[0:5:2]) print(li[-2::-2]) print(li[5:0:-2])
输出:
[1, 2, 3] [3, 'af', 're'] [1, 3, 're'] [4, 'af', 2] [4, 'af', 2]
列表的增删改查:(对列表的操作,会直接改变原列表)
增:
li = ['taibai','alex','wusir'] # 1增加 append 在最后增加一个元素 print(li.append('yuanhao')) li.append([1,2,3,'www']) print(li)
输出:
None
['taibai', 'alex', 'wusir', 'yuanhao', [1, 2, 3, 'www']]
应用:
li = []
while True: username = input('请输入员工姓名:') if username.lower() == 'q':break li.append(username) print(li)
insert #按照索引去增加
li = ['taibai','alex','wusir'] li.insert(1,'日天') print(li) 输出: ['taibai', '日天', 'alex', 'wusir']
#extend 迭代的添加
li = ['taibai','alex','wusir'] li.extend('q') print(li) li.extend('asdt') print(li) li.extend([1,2,3,'www']) print(li) li.extend('abc') print(li) li.extend('a,b,c') print(li) 输出: ['taibai', 'alex', 'wusir', 'q'] ['taibai', 'alex', 'wusir', 'q', 'a', 's', 'd', 't'] ['taibai', 'alex', 'wusir', 'q', 'a', 's', 'd', 't', 1, 2, 3, 'www'] ['taibai', 'alex', 'wusir', 'q', 'a', 's', 'd', 't', 1, 2, 3, 'www', 'a', 'b', 'c'] ['taibai', 'alex', 'wusir', 'q', 'a', 's', 'd', 't', 1, 2, 3, 'www', 'a', 'b', 'c', 'a', ',', 'b', ',', 'c']
删:
#删除 pop 按照索引去删除,有返回值
li = ['taibai','alex','wusir','egon','hulu','jingnvshen'] #删除 pop 按照索引去删除,有返回值 name = li.pop(1) print(name) print(li) 输出: alex ['taibai', 'wusir', 'egon', 'hulu', 'jingnvshen']
# remove 按照元素去删除
li = ['taibai','alex','wusir'] # remove 按照元素去删除 li.remove('alex') print(li) 输出: ['taibai', 'wusir']
#clear 清空列表
li = ['taibai','alex','wusir'] #clear 清空列表 li.clear() print(li) 输出: []
del 按照位置去删除,也可切片删除没有返回值。
li = ['taibai','alex','wusir','egon','hulu','jingnvshen'] del li[2:4] print(li) del li[0:4:2] print(li) 输出: ['taibai', 'alex', 'hulu', 'jingnvshen'] ['alex', 'jingnvshen']
改:
#改
如果是索引:先删除索引位置元素,后将新元素添加到索引位置。
如果是切片,先删除切片位置元素,迭代着添加新元素到切片位置。
li = ['taibai','alex','wusir','egon','hulu','jingnvshen'] #改 先切片删除,后迭代着添加 li[0] = '男神' print(li) li[0:3] = '都是男人' print(li) li[:] = '都是男人' print(li) 输出: ['男神', 'alex', 'wusir', 'egon', 'hulu', 'jingnvshen'] ['都', '是', '男', '人', 'egon', 'hulu', 'jingnvshen'] ['都', '是', '男', '人']
li = ['taibai','alex','wusir','egon','hulu','jingnvshen'] li[0:2] = ['asd'] print(li) li[0:2] = ['asd','fdsa',123] print(li) 输出: ['asd', 'wusir', 'egon', 'hulu', 'jingnvshen'] ['asd', 'fdsa', 123, 'egon', 'hulu', 'jingnvshen']
查:
切片去查,或者循环去查
切片去查
li = ['taibai','alex','wusir','egon','hulu','jingnvshen'] # print(li[1:4])
循环去查 # li = ['taibai','taibai','wusir','egon','taibai','jingnvshen']
# for i in li:
# print(i)
列表的嵌套:
li = [1,2,5,'taibai','yuanhao',[1,'alex',3,],True] # print(li[3]) # print(li[3][3])
# s = li[4].capitalize() #li[4]是字符串,字符串不可改变,需要定义一个新的字符串。 # li[4] = s #li[4] = li[4].capitalize() # li[4] = 'Yuanhao' # print(li)
# s2 = li[4].replace('hao','日天') # li[4] = s2 # li[4] = li[4][0:4] + 'ritian' # print(li) # l2 = li[5] # li[5][0] = '文杰' # print(li) li[5][1] = li[5][1].upper() #定义到的元素是字符串,将改变的结果重新赋值给字符串 print(li)
列表的其他方法:
li = [2,3,1,5,6,8,9,7,4,10] #sort 正序排序 li.sort() print(li) li = [2,3,1,5,6,8,9,7,4,10] # reverse 反转 li.reverse() print(li) #li.sort(reverse=True) 倒叙排序 li.sort(reverse=True) print(li) 输出: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] [10, 4, 7, 9, 8, 6, 5, 1, 3, 2] [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
奇葩切片:
l = ["a", "b", "c", "d", "e"] print(l[0:1]) print(l[0:0]) print(l[2:0]) 输出: ['a'] [] []