列表
简单来说就是有序的,可变的,可包含任意对象的集合。
属于可变序列
可包含任意类型(对象)
通过下标访问元素,从0开始
长度可变,任意嵌套
支持原位改变,可以动态的收缩或者扩展大小
列表的基本使用
none_list = [] #定义一个空列表
list1 = [1,2,3,4,5] #为列表赋值单一的类型
list2 = ["a",1,3.1415926,True] #为列表赋值不同的类型
print(type(list1)) #输出 list1 的类型
print(type(list2)) #输出 list2 的类型
print(list1[0]) #通过下标访问
print(list2[1:])
print(list2[:3])
print(list2[2:3])
print(list2[-1])
print(list2[-2])
print(list2[-4])
运行结果:
<class 'list'>
<class 'list'>
1
[1, 3.1415926, True]
['a', 1, 3.1415926]
[3.1415926]
True
3.1415926
a
特点1:长度可变
给原列表添加一个新的元素
list1 = [1,2,3]
print(list1)
list1.append(4)
print(list1)
运行结果:
[1, 2, 3]
[1, 2, 3, 4]
特点2:支持原位改变
将列表的第一个元素替换为新的元素
list1 = [1,2,3]
list1[0] = 99
print(list1)
运行结果:
[99, 2, 3]
特点3:任意嵌套
列表里可以接着嵌套列表
list3 = [0,1,2,"str",[11,22,33],[000,111,222]]
print(list3) #输出嵌套列表
print(list3[4][2]) #输出嵌套列表的第4个元素里的第2个元素
运行结果:
[0, 1, 2, 'str', [11, 22, 33], [0, 111, 222]]
33
##### 遍历列表中的元素
方法一:
python
list1 = [2,3,4,5,6]
for i in range(0,len(list1)):
print(list1[i])
方法二:
list1 = [2,3,4,5,6]
for j in list1 :
print(j)
运行结果:
2
3
4
5
6
遍历嵌套列表
1.有规律都是列表时
list4 = [[1,2,3],[11,22,33],["a","b","c"]]
for a in list4:
print(a)
for item in a:
print(item)
运行结果:
[1, 2, 3]
1
2
3
[11, 22, 33]
11
22
33
['a', 'b', 'c']
a
b
c
2.无规律,有列表也有其他字符时
list1 = ["a",["bb","cc"],"1","2",["q","w","e"]]
for b in list1:
print(b)
if isinstance(b,list): # true 元素为list
for item in b:
print(item)
运行结果:
a
['bb', 'cc']
bb
cc
1
2
['q', 'w', 'e']
q
w
e
列表的排序
- 从小到大排序
scores = [12,34,1,55,525,53]
scores.sort() #从小到大,直接改变本身
print(scores)
运行结果:
[1, 12, 34, 53, 55, 525]
- 列表是字母时,如何排序?
按照首字母排序
names = ["aom","cike","zoin","you"]
names.sort() #按照开头字母排序
print(names)
运行结果:
['aom', 'cike', 'you', 'zoin']
按照最后一个字母来排序
names = ["aom","cike","zoin","you"]
names.sort(key=lambda a:a[-1])
print(names)
运行结果:
['cike', 'aom', 'zoin', 'you']
倒置列表
先排序,在倒置
示例:
scores = ["aom","cike","zoin","you"]
scores.sort(reverse=True) #相当于scores.sort() scores.reverse()
print(scores)
运行结果:
['zoin', 'you', 'cike', 'aom']
sorted() 函数
功能:从小到大进行排序,会返回一个新的结果,列表本身不会改变
示例:
a = [12,23,1,44]
print(sorted(a)) #从小到大进行排序,会返回一个新的结果,列表本身不会改变
print(a)
运行结果:
[1, 12, 23, 44]
[12, 23, 1, 44]
列表的转换
- 字符串转列表
- 元组转列表
示例:
str1 = "abc"
print(str1)
print(list(str1)) # 字符串转列表
tuple1 = (1,"2","3")
print(list(tuple1)) #元组转列表
运行结果:
['a', 'b', 'c']
[1, '2', '3']
判断元素是否在序列之内
如果在返回True 不在返回False
示例:
a = list(range(0,7))
b = ["tom","zhangsan","马小跳"]
print(1 in a )
print("马小跳" in b )
print(1 not in a )
运行结果:
True
True
False
检测序列中某个元素第一次出现的位置
示例: 查找元素4第一次出现的位置
d = [1,3,4,3,4,5,3]
print(d.index(4))
运行结果:
2
统计某个元素出现的次数
示例:统计元素3出现的次数
d = [1,3,4,3,4,5,3]
print(d.count(3))
运行结果:
3
列表的修改
注意:修改的结果是直接作用于本身的
l = list(range(1,11))
print(l)
#改变某个元素的值
l[0] = 99
print(l)
#改变范围元素的值
l[0:5] = [99]
print(l)
#改变步长范围的值
l1 = list(range(1,11))
l1[::2] = [99,99,99,99,99]
print(l1)
运行结果:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[99, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[99, 6, 7, 8, 9, 10]
[99, 2, 99, 4, 99, 6, 99, 8, 99, 10]
列表的删除
- del 根据下标删除元素
d1 = ["孙悟空","猪八戒","沙悟净","唐僧","糖糖"]
del d1[-1]
print(d1)
运行结果:
['孙悟空', '猪八戒', '沙悟净', '唐僧']
- .remove 根据元素的值删除元素,如果元素重复,删除第一个匹配到的
r1 = list(range(0,11))
print(r1)
r1.remove(9)
print(r1)
r2 = [1,2,3,4,4,5,5,4,5]
print(r2)
r2.remove(5)
print(r2)
运行结果:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 10]
[1, 2, 3, 4, 4, 5, 5, 4, 5]
[1, 2, 3, 4, 4, 5, 4, 5]
列表的清空
方法一:
python
x = [1,2,3,4,5]
print(x)
x.clear()
print(x)
运行结果:
[1, 2, 3, 4, 5]
[]
方法二:
y = [1,2,3]
y = []
print(y)
运行结果 :
[]
检索并删除特定的元素
示例:
p = [5,6,3,45,63]
print(p)
p.pop() #不指定,默认删除最后一个
print(p)
p.pop(0) #从指定的位置开始删除
print(p)
delp1 = p.pop() #可以把删除的元素,拿出来赋给一个新的变量
print(delp1)
运行结果:
[5, 6, 3, 45, 63]
[5, 6, 3, 45]
[6, 3, 45]
45
序列的添加
- .append() 添加到列表的末尾,每次只能添加一个元素,可以是列表
a = [1,2,3]
a.append("one")
a.append([3,2,1])
print(a)
运行结果:
[1, 2, 3, 'one', [3, 2, 1]]
- .extend() 拓展列表,用于插入序列
e = [1,2,3]
print(e)
e.extend(["qqq"])
print(e)
运行结果:
[1, 2, 3]
[1, 2, 3, 'qqq']
- .insert() 插入元素
示例 :
#方法一
i = [1,2,3]
i.insert(0,"新插入的元素值")
print(i)
#方法二
i2 = [1,2,3]
i2[2:3] = ["新插入的元素"]
print(i2)
运行结果:
['新插入的元素值', 1, 2, 3]
[1, 2, '新插入的元素']
序列的复制
- .copy() 复制
示例:
c3 = [0,1,2,3,4,5,6,7,8,9,10]
c4 = c3.copy()
c4[1] = 99
print(c3)
print(c4)
运行结果:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[0, 99, 2, 3, 4, 5, 6, 7, 8, 9, 10]
- 序列[:]
示例:
c3 = [0,1,2,3,4,5,6,7,8,9,10]
c5 = c3[:]
c5[2] = 99
print(c3)
print(c5)
运行结果:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[0, 1, 99, 3, 4, 5, 6, 7, 8, 9, 10]