Python的list列表
- 列表的创建与删除
- 列表的特点
- 列表的创建
- 使用[]
- 使用list()函数
- 列表的查询操作
- 获取列表中指定元素的索引
- 获取列表中单个元素
- 获取列表中多个元素
- 判断元素是否在列表中
- in和not in
- 列表的遍历
- 列表长度
- 列表元素的增删改
- 列表元素的增加
- append()
- extend()
- insert()
- 列表元素的删除
- remove()
- pop()
- clear()
- del()
- 列表元素的修改
- 列表元素的排序
- sort()
- sorted()
列表的创建与删除
变量可以存储一个元素,而列表可以存储多个元素。
Python内置的一种数据类型是列表:list。
列表的特点
- 列表元素按顺序有序排序;
- 列表可以存储重复的数据;
- 可以任意类型混存;
- 根据需要动态分类和回收内存,长度可变;
列表的创建
列表(list)是一种有序容器,可以向其中添加或删除任意元素。在Python中,我们可以使用list方法创建一个空列表,也可以使用一对中括号来创建列表。因为中括号写起来更简便,所以通过中括号创建列表更为常见。
使用[]
使用中括号[]
,元素之间是用英文的逗号进行分割。
list1 = ['Google', 'Apple', 1997, 2000]
list2 = [1, 2, 3, 4, 5 ]
list3 = ["a", "b", "c", "d"]
list4 = ['red', 'green', 'blue', 'yellow', 'white', 'black']
使用list()函数
使用内置函数list()
。
list1=list(['hello','world',98])
列表的查询操作
获取列表中指定元素的索引
使用列表的index()
函数来返回元素的索引。
如果列表中存在多个相同元素,只返回元素中第一个元素的索引。
list1=['hello','world',98,'hello']
print(list1.index('hello')) #如果列表中有相同元素只返回列表中相同元素的第一个元素的索引
如果查询的元素不在列表中,则会抛出ValueError
错误。
list1=['hello','world',98,'hello']
print(list1.index('Python')) #ValueError: 'Python' is not in list
还可以设置在指定范围内进行查找。
list1=['hello','world',98,'hello']
print(list1.index('hello',1,3)) #ValueError: 'hello' is not in list 'world',98
获取列表中单个元素
与字符串的索引一样,列表索引从 0 开始,第二个索引是 1,依此类推。
list = ['red', 'green', 'blue', 'yellow', 'white', 'black']
print( list[0] )
print( list[1] )
print( list[2] )
####################输出结果######################
red
green
blue
索引也可以从尾部开始,最后一个元素的索引为 -1,往前一位为 -2,以此类推。
list = ['red', 'green', 'blue', 'yellow', 'white', 'black']
print( list[-1] )
print( list[-2] )
print( list[-3] )
####################输出结果######################
black
white
yellow
当索引超出了范围时,Python
会报一个IndexError
错误,所以,要确保索引不要越界,记得最后一个元素的索引是len(classmates) - 1
。
>>> classmates = ['Michael', 'Bob', 'Tracy']
>>> classmates
['Michael', 'Bob', 'Tracy']
>>> classmates[3]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
获取列表中多个元素
同样你也可以使用方括号 [] 的形式截取字符,通过指定范围的起点和终点来指定索引范围。指定范围后,返回值将是包含指定项目的新列表。
格式为:[start : stop : step]
;
thislist = ["apple", "banana", "cherry", "orange", "kiwi", "melon", "mango"]
# 返回第三、第四、第五项:
print(thislist[2:5]) # ['cherry', 'orange', 'kiwi']
nums = [10, 20, 30, 40, 50, 60, 70, 80, 90]
print(nums[0:4]) # [10, 20, 30, 40]
其中,step
为步长,默认为1,可省略不写。
判断元素是否在列表中
in和not in
如果要确定列表中是否存在指定的项,请使用 in
或者 not in
关键字:
thislist = ["apple", "banana", "cherry"]
if "apple" in thislist:
print("Yes, 'apple' is in the fruits list")
print('p' in 'python') #True
print('k' not in 'python')#True
list1=[10,20,'python','hello']
print(10 in list1) #True
print(100 in list1) #False
print(10 not in list1) #False
print(100 not in list1) #True
列表的遍历
您可以使用 for 循环遍历列表项:
thislist = ["apple", "banana", "cherry"]
for x in thislist:
print(x)
#############运行结果#######################
apple
banana
cherry
列表长度
如需确定列表中有多少项,请使用 len() 方法:
thislist = ["apple", "banana", "cherry"]
print(len(thislist)) # 3
列表元素的增删改
列表元素的增加
append()
append()
方法为,在列表的末尾增加一个元素:
thislist = ["apple", "banana", "cherry"]
thislist.append("orange")
print(thislist) # ['apple', 'banana', 'cherry', 'orange']
extend()
extend()
方法为,将列表元素(或任何可迭代的元素)添加到当前列表的末尾:
list1=[10,20,30]
list2=['hello','world']
#向列表的末尾一次性添加多个元素
lst.extend(list2)
print(list1) # [10, 20, 30, 'hello', 'world']
insert()
insert()
方法为,在列表的任意位置添加一个元素:
thislist = ["apple", "banana", "cherry"]
# 插入元素作为第二个位置
thislist.insert(1, "orange")
print(thislist) # ['apple', 'orange', 'banana', 'cherry']
列表元素的删除
remove()
remove()
方法特点为,一次删除一个元素,重复元素只删除第一个,元素不存在则抛出ValueError
错误。
list1=[10,20,30,40,50,60,30]
list1.remove(30) # 从列表中移除一个元素,如果有重复元素只移第一个元素
print(list1) # [10, 20, 40, 50, 60, 30]
list1.remove(100) # ValueError: list.remove(x): x not in list
pop()
pop()
方法特点为,删除一个指定索引位置上的元素,指定索引不存在则抛出IndexError
错误,不指定索引的话删除列表中最后一个元素。
# pop()根据索引移除元素
list1.pop(1)
print(list1) # [10, 40, 50, 60, 30]
list1.pop(5) # IndexError: pop index out of range 如果指定的索引位置不存在,将抛出异常
list1.pop() #如果不指定参数(索引),将删除列表中的最后一个元素
print(list1) # [10, 40, 50, 60]
clear()
clear()
方法为,清空列表中的所有元素:
'''清除列表中的所有元素'''
list1.clear()
print(list1) # []
del()
del()
方法为,删除列表:
'''del语句将列表对象删除'''
del list1
print(list1) # NameError: name 'list1' is not defined
列表元素的修改
直接为指定索引的元素赋予一个新的值即可:
list1=[10,20,30,40]
#一次修改一个值
list1[2]=100
print(list1) # [10, 20, 100, 40]
列表元素的排序
sort()
调用sort()
方法,列有中的所有元素默认按照从小到大的顺序进行排序,可以指定reverse=True
,进行降序排序;原列表发生改变。默认是 reverse=False
为升序。
list1=[20,40,10,98,54]
# 输出结果:排序前的列表 [20, 40, 10, 98, 54] 2082888330624
print('排序前的列表',list1,id(list1))
# 开始排序 ,调用列表对象的sort方法,升序排序
list1.sort()
# 输出结果:排序后的列表 [10, 20, 40, 54, 98] 2082888330624
# id(list1)一样,说明为同一个数组,对原数组本身进行了排序修改
print('排序后的列表',list1,id(list1))
#通过指定关键字参数,将列表中的元素进行降序排序
list1.sort(reverse=True) #reverse=True 表示降序排序, reverse=False就是升序排序
print(list1) # [98, 54, 40, 20, 10]
list1.sort(reverse=False)
print(list1) # [10, 20, 40, 54, 98]
sorted()
调用内置函数sorted()
,可以指定reverse=True
,进行降序排序,**原列表不发生改变。**默认是 reverse=False
为升序。
list1=[20,40,10,98,54]
print('原列表',list1) # 原列表 [20, 40, 10, 98, 54]
#开始排序
new_list=sorted(list1)
print(list1) # [20, 40, 10, 98, 54]
print(new_list) # [10, 20, 40, 54, 98]
#指定关键字参数,实现列表元素的降序排序
desc_list=sorted(list1,reverse=True)
print(desc_list) # [98, 54, 40, 20, 10]