python基础(8)基本数据类型之列表
5,list(列表)
python的列表可以存放不同的,任意的数据类型对象。
-
-
可变
-
1,列表的创建
[],内部元素以,分割
data = ["hello world"]
>>> len(data)
1
# 列表中只有一个·元素
data = ["hello", "world"]
>>> len(data)
2
# 列表中两个元素
特性:
1.可存放多个值
2.按照从左到右的顺序定义列表元素,下标从0开始顺序访问,有序
3.可变
2,列表索引

-
从零开始
-
顾前不顾后
3,索引以及各种操作方法
>>> data = "hello world"
>>> data.split()
['hello', 'world']
>>> data = data.split("o")
>>> data
['hell', ' w', 'rld']
1,查看列表长度len()
>>> len(data)
3
2,查看索引index() # 没有会报错
>>> data.index("hell")
0
>>> data.index("rld")
2
3,通过索引查看内容
>>> data[0]
'hell'
>>> data[2]
'rld'
4,切片
>>> data[0:1]
['hell']
>>> data[0:2]
['hell', ' w']
# 列表的长度只有3,索引最大只有2,但是后面的
>>> data[0:3]
['hell', ' w', 'rld']
>>> data[0:4]
['hell', ' w', 'rld']
# 步长
>>> data = ['hell', ' w', 'rld']
>>> data[0::2]
['hell', 'rld']
# 反转列表
>>> data[::-1]
['rld', ' w', 'hell']
5,追加append()
>>> data.append("h")
>>> data
['hell', ' w', 'rld', 'h']
# 批量追加extend,将一个列表的元素逐一添加到另一个列表
>>> data = ['hell', ' w', 'rld', 'h']
>>> tools = [111,222,333]
>>> data.extend(tools)
>>> data
['hell', ' w', 'rld', 'h', 111, 222, 333]
6,插入insert()
>>> data.insert(1,"44")
# 按照索引插入
>>> data
['hell', '44', ' w', 'rld', 'h', 111, 222, 333]
7,删除remove() # 从左到右找到第一个,没有会报错
>>> data.remove("h")
>>> data
['hell', '44', ' w', 'rld', 111, 222, 333]
# pop() 根据索引删除
>>> data.pop(2)
' w'
>>> data
['hell', '44', 'rld', 111, 222, 333]
#del
>>> del data 直接删除data
>>> data
Traceback (most recent call last):
File "<pyshell#85>", line 1, in <module>
data
NameError: name 'data' is not defined
8,列表元素排序sort()
>>> data = ['hell', ' w', 'rld', 'h']
>>> data.sort() # 从小到大
>>> data
[' w', 'h', 'hell', 'rld']
>>> data = [111,222,333,444]
>>> data.sort(reverse=True) # 从大到小
>>> data
[444, 333, 222, 111]
# 单独使用字符串排序或者数字排序都可以,但是混用不行
>>> data = ['hell', '44', 'rld', 111, 222, 333]
>>> data.sort()
Traceback (most recent call last):
File "<pyshell#111>", line 1, in <module>
data.sort()
TypeError: '<' not supported between instances of 'int' and 'str'
9,反转列表reverse
>>> data = [' w', 'h', 'hell', 'rld']
>>> data.reverse()
>>> data
['rld', 'hell', 'h', ' w']
4,列表和字符串相同的功能
-
加法 列表+列表
>>> a = ["h","he","hello"]
>>> b = [11,222,33]
>>> a + b
['h', 'he', 'hello', 11, 222, 33]
# str
>>> a = "hello"
>>> b = "112233"
>>> a + b
'hello112233' -
乘法 列表*整形
>>> a * 2
['h', 'he', 'hello', 'h', 'he', 'hello']
>>> b * 2
[11, 222, 33, 11, 222, 33]
# str
>>> a * 2
'hellohello'
>>> b * 2
'112233112233' -
in
>>> 11 in b
True
# str
>>> "11" in b
True
5,循环for
data = [' w', 'h', 'hell', 'rld']
>>> for i in data:
print(i)
w
h
hell
rld
# 直接循环获取值
>>> for index in range(len(data)):
print(data[index])
w
h
hell
rld
# 先获取索引,再得到值
6,循环中的删除
>>> data
[' w', 'h', 'hell', 'rld']
>>> for i in data:
if i.startswith("h"):
data.remove(i)
# 循环data中每一个元素,如果该元素以h开头,则删除
# 理论上应该得到[' w', 'rld']
# 实际上
>>> data
[' w', 'hell', 'rld']
"""
这是因为for循环先拿到第一个数据“w“,判断不是,下一个。拿到第二个数据”h”,判断是,删除。
拿第三个数据,请注意,此时"h"已经被删除,"hell"是第二个数据,拿到的第三个数据是"rld"
"""
>>> data = [' w', 'h', 'hell', 'rld']
>>> for i in data:
print(i)
if i.startswith("h"):
data.remove(i)
print(f"此时删除的数据是:{i}")
w
h
此时删除的数据是:h
rld
>>> data
[' w', 'hell', 'rld']
循环过程中对列表进行删除数据,一定要注意倒着删
>>> data = [' w', 'h', 'hell', 'rld']
>>> for i in range(len(data)-1,-1,-1):
if data[i].startswith("h"):
data.remove(data[i])
>>> data
[' w', 'rld']
错误案例
>>> data = [' w', 'h', 'hell', 'rld']
>>> for i in range(len(data)-1):
if data[i].startswith("h"):
data.remove(data[i])
>>> data
[' w', 'rld']
# 这种方法当data= ["h1", "h2", "h3", "h4", "h5"]就不行了
>>> data = ["h", "h2","h3","h4"]
>>> for i in range(len(data)-1):
if data[i].startswith("h"):
data.remove(data[i])
Traceback (most recent call last):
File "<pyshell#34>", line 2, in <module>
if data[i].startswith("h"):
IndexError: list index out of range
7,列表生成式
通过最简洁的方法创建列表
>>> print([i for i in range(10)])
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 等同于
>>> data = []
>>> for i in range(10):
data.append(i)
>>> data
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
浙公网安备 33010602011771号