列表用于存储任意数目,任意类型的数据集合,是一个有序且可更改的集合,是包含多个元素的有序连续的内存空间
1、列表的创建
# 创建空列表
list1 = []
# 创建包含多种数据类型的列表
list2 = ["python",22,(2,3,4),{"name":"lisa"}]
# list():可以将任何可迭代数据转换为列表
a = "hello me"
print(list(a)) # ['h', 'e', 'l', 'l', 'o', ' ', 'm', 'e']
print(list(range(0,10))) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
2、访问列表值
2.1、根据切片访问列表元素
正向从0开始,方向从-1开始
list_name = ['wzq', 'lgl', 'gz', 'whl', 'sj', 'hxw']
print(list_name[0:6])
print(list_name[-5:-1])
2.2、根据索引访问列表元素
list_name = ['wzq', 'lgl', 'gz', 'whl', 'sj', 'hxw']
print(list_name[3])
print(list_name[2])
3、遍历列表
list1 = ["python","go","java","php"]
方法一:
for i in list:
print(i)
方法二:
for i in range(len(list1)):
print(i)
方法三:使用enumerate()函数
for i,val in enumerate(list1):
print("{}:{}".format(i,val)) //i是索引,val是值
4、列表常用方法
4.1、list()可以将序列(元组,集合,字符串等)转换为列表
aTuple = (123, 'Google', 'W3CSchool', 'Taobao')
list1 = list(aTuple)
print ("列表元素 : ", list1)
str="Hello World"
list2=list(str)
print ("列表元素 : ", list2)
4.2、列表元素的添加方法:包括append(),+运算符操作,extend(),insert()
append()在列表尾部添加新元素,无返回值,所以修改的是原列表。速度快,推荐使用
a = [10,20]
# 第一次追加"ABC"
a.append("ABC")
print(a) # [10, 20, 'ABC']
# 第二次追加123
a.append(123)
print(a) # [10, 20, 'ABC', 123]
+操作运算符是创建新的列表对象,将原列表的元素和新列表元素依次复制到新的列表对象
对于操作大量元素不推荐使用
a = [10,20]
print('原先的a:',a)
print('a原先的id:',id(a)) # 140658436025984
a = a + [40,50]
print('a+运算后的a:',a) # [10, 20, 40, 50]
print('a+运算后的id:',id(a)) # 140658436032640
extend()是在列表末尾一次性追加另一个序列的多个值(比如字符串,列表,元组,集合),不创建新的列表对象
a = [10,20]
b = ["python","go"]
# 将列表b追加到列表a中
a.extend(b)
print(a) # [10, 20, 'python', 'go']
insert(index, obj)将指定元素插入到列表的任意指定位置,然后后面所有元素进行移动,没有返回值
a= [10,20,30,40,50]
# 在索引为3的位置插入"hello"
a.insert(3,"hello")
print(a) # [10, 20, 30, 'hello', 40, 50]
4.3、列表元素的删除方法
包括del ,pop(),remove()
del是删除列表指定位置的元素,后面的元素也会进行移动,也可以删除整个列表
a= [10,20,30,40,50]
# 指定删除索引为2的元素
del a[2]
print(a) # [10, 20, 40, 50]
pop()删除列表的指定元素,并返回该元素的值,不指定默认是最后一个元素
a= [10,20,30,40,50]
# 指定删除索引为2的元素
b1 = a.pop(2)
print(a,b1) # [10, 20, 40, 50] 30
# 默认删除最后一个
b2 = a.pop()
print(a,b2) # [10, 20, 40] 50
remove()首次出现的指定元素,不存在该元素就抛异常
a= [10,20,30,40,50,20,10,20]
# 删除首次出现的20
a.remove(20)
print(a) # [10, 30, 40, 50, 20, 10, 20]
4.4、统计列表元素出现的位置
count() 方法用于统计某个元素在列表中出现的次数
a = [55,22,33,44,22,66,33,22]
print(a.count(22)) # 3
4.5、返回字符串长度
len() 方法返回列表元素个数
a = [55,22,33,44,22,66,33,22]
print('列表a的长度为:',len(a))
4.6、列表排序
sort([func])用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数,没有返回值,修改原列表
func -- 可选参数, 如果指定了该参数会使用该参数的方法进行排序
a = [23,4,6,1,33,90,78,100,-1,-34]
print('排序前的a列表为:',a)
a.sort() #默认是升序排列
print('排序后的a列表为:',a)
a.sort(reverse=True) #降序排列
print('降序排序后的a列表为:',a)
4.7、max() min() sum()
针对数值型的内置函数使用
a = [10,20,30]
print('a的最小值为:',min(a))
print('a的最大值为:',max(a))
print('a的和为:',sum(a))
针对非数值型内置函数的使用
a = ['ban','pen','can']
print('a的最小值为:',min(a))
print('a的最大值为:',max(a))
print('a的和为:',sum(a)) # 对非数值类型列表运算都会报错
4.8、清空列表
将列表元素都清空,没有返回值
a = [10,20,30]
a.clear()
print(a) # []
4.9、复制列表
copy()复制列表,返回复制后的新列表
a = [10,20,30]
b = a.copy()
print(b) # [10, 20, 30]