列表,类似于JAVA中的数组,但是它比数组更加强大,可以存放任意数据类型
list1=[10,20,30,40,50,60] #可以存放数字
list2=['aa','bb','cc'] #也可以存放字符串
list3=[10,'ABC',(10,20,30),{'A':'B'},[36,72]] #也可以存放其他类型
print(list1,list2,list3)
访问列表中的值
- 与字符串的索引一样,列表索引从 0 开始,第二个索引是 1,依此类推。
通过索引列表可以进行截取、组合等操作。
list1 = ['red', 'green', 'blue', 'yellow', 'white', 'black']
print( list1[0] )
print( list1[1] )
print( list1[2] )
red
green
blue
Process finished with exit code 0
- 索引也可以从尾部开始,最后一个元素的索引为 -1,往前一位为 -2,以此类推。
list1 = ['red', 'green', 'blue', 'yellow', 'white', 'black']
print( list1[-1] )
print( list1[-2] )
print( list1[-3] )
black
white
yellow
Process finished with exit code 0
- 列表的切片
切片不会改变原列表
[start:end:step]
第一个数字start表示切片开始位置,默认为0;
第二个数字end表示切片截止(但不包含)位置(默认为列表长度);
第三个数字step表示切片的步长(默认为1)。
当start为0时可以省略,当end为列表长度时可以省略,
当step为1时可以省略,并且省略步长时可以同时省略最后一个冒号。
另外,当step为负整数时,表示反向切片,这时start应该比end的值要大才行。
list1 = [10, 20, 30, 40, 50, 60, 70, 80, 90,100]
print (list1[::]) # 返回包含原列表中所有元素的新列表
print (list1[::-1]) # 省略起始索引、终止索引,步长值为-1,表示列表的反转
print (list1[::2]) # 隔一个取一个,获取偶数位置的元素
print (list1[1::2]) # 隔一个取一个,获取奇数位置的元素
print (list1[3:6]) # 指定切片的开始和结束位置
print(list1[1:-2])# 从第二位开始(包含)截取到倒数第二位(不包含)
print(list1[1:-7:-1])
# []
#起始索引1在结束索引-7的左边,因此从左往右取值,但步长为-1则决定了从右往左取值,两者矛盾,因此为空。
print(list1[-1:7:-1])
# [100, 90]
# 起始索引-1在结束索引7的右边,因此从右往左取值,而步长-1同样决定了从右往左取值,因此结果正确
[10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
[100, 90, 80, 70, 60, 50, 40, 30, 20, 10]
[10, 30, 50, 70, 90]
[20, 40, 60, 80, 100]
[40, 50, 60]
[20, 30, 40, 50, 60, 70, 80]
[]
[100, 90]
Process finished with exit code 0
print(list1[-1:-7])
# []
"""
步长默认为1,从左往右取值,而起始索引-1到结束索引-6决定了从右往左取值,两者矛盾,所以为空。
索引-1在-6的右边
"""
print(list1[-5::-1])
# [60, 50, 40, 30, 20, 10]
# 步长为-1,从右往左取值,从起始索引-5开始,一直取到“起点”
列表属于可变对象,可以添加元素,修改元素,删除元素
- 添加元素
- 使用 append() 方法,将元素添加到列表的末尾
list1=[10,20,30,40,50,60]
list1.append(90) #在列表的末尾添加一个值
print(list1)
- 使用 insert() 方法,在指定的索引处添加元素
list1=[10,20,30,40,50,60]
list1.insert(2,27.75) #在列表的指定位置添加一个值 ,第一个参数是下标,第二个参数是值
list1.insert(0,29.975) #如果输入的第一个参数大于列表的长度,那么就等价于append
print(list1)
- 修改列表
list1_1=[10,20,30,40,[50,60]]
list1_1[-1][-1]=98 #对于子列表,使用两层下标即可
print(list1_1)
- 删除列表中元素
- pop() 方法删除指定的索引(如果未指定索引,则删除最后一项):
list1=[10,20,30,40,50,60]
list1.pop() #不填写参数时,默认删除列表的最后一位
list1.pop(0) #也可以填写下标,删除指定位置的值
print(list1)
- remove() 方法删除指定的元素
remove根据值来删除,如果列表中没有对应的值,则报错.如果有多个值,则只删第一个
因为remove是根据值来删除元素,每个元素都要比对一下,所以效率相对较低
list1=[10,20,30,40,50,60]
list1.remove(10)
print(list1)
- del 关键字删除指定的索引
list1=[10,20,30,40,50,60]
del list1[2]
print(list1)
del 关键字也能完整地删除列表:
list2 = ["apple", "banana", "cherry"]
del list2
- clear() 方法清空列表:
list1 = ["apple", "banana", "cherry"]
list1.clear()
print(list1)
- 遍历列表
list1 = ["apple", "banana", "cherry"]
for one in list1 :
print(one)
- 列表的拼接
extend() 函数用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
extend()方法语法:
list.extend(seq)
参数:
- seq – 元素列表,可以是列表、元组、集合、字典,若为字典,则仅会将键(key)作为元素依次添加至原列表的末尾。
返回值
该方法没有返回值,但会在已存在的列表中添加新的列表内容。
# 列表
language = ['French', 'English', 'German']
# 元组
language_tuple = ('Spanish', 'Portuguese')
# 集合
language_set = {'Chinese', 'Japanese'}
# 添加元组元素到列表末尾
language.extend(language_tuple)
print('新列表: ', language)
# 添加集合元素到列表末尾
language.extend(language_set)
print('新列表: ', language)
新列表: ['French', 'English', 'German', 'Spanish', 'Portuguese']
新列表: ['French', 'English', 'German', 'Spanish', 'Portuguese', 'Chinese', 'Japanese']
Process finished with exit code 0
- Python列表函数
序号 | 函数 |
---|---|
1 | len(list) 列表元素个数(列表的长度) |
2 | max(list) 返回列表元素最大值 |
3 | min(list) 返回列表元素最小值 |
4 | list(seq) 将元组转换为列表 |
- reverse()
reverse() 函数用于反向列表中元素。
list1 = ['Google', 'Runoob', 'Taobao', 'Baidu']
list1.reverse()
print ("列表反转后: ", list1)
列表反转后: ['Baidu', 'Taobao', 'Runoob', 'Google']
- 列表的排序
sort() 函数用于对原列表进行排序
语法
sort()方法语法:
list.sort( key=None, reverse=False)
参数
- key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
- reverse – 排序规则,reverse = True 降序, reverse = False 升序(默认)。
返回值
该方法没有返回值,但是会对列表的对象进行排序
list1 = ['Google', 'Runoob', 'Taobao', 'Facebook']
list1 .sort() #默认升序
print ( "List : ", list1 )
# 列表
list1 = [50, 45, 70, 99, 100]
# 降序
list1.sort(reverse=True)
# 输出结果
print ( '降序输出:', list1)
通过指定列表中的元素排序来输出列表:
# 获取列表的第二个元素
def takeSecond(elem):
return elem[1]
# 列表
random = [(2, 2), (3, 4), (4, 1), (1, 3)]
# 指定第二个元素排序
random.sort(key=takeSecond)
# 输出类别
print ('排序列表:', random)
排序列表:[(4, 1), (2, 2), (1, 3), (3, 4)]
- 复制列表
list.copy(),返回列表的副本
list1 = ['Google', 'Runoob', 'Taobao', 'Baidu']
list2 = list1.copy()
print ("list2 列表: ", list2)
list1.append('JD')
print(list1,list2)
list2 列表: ['Google', 'Runoob', 'Taobao', 'Baidu']
['Google', 'Runoob', 'Taobao', 'Baidu', 'JD'] ['Google', 'Runoob', 'Taobao', 'Baidu']
浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。
list1 = ['Google', 'Runoob', 'Baidu',['JD']]
list2 = list1.copy()
print ("list2 列表: ", list2)
list1[-1].append('Taobao')
print(list1,list2)
list2 列表: ['Google', 'Runoob', 'Baidu', ['JD']]
['Google', 'Runoob', 'Baidu', ['JD', 'Taobao']] ['Google', 'Runoob', 'Baidu', ['JD', 'Taobao']]
Process finished with exit code 0