Skip to main content

介绍

# 一、增加元素
# 1.+:直接使用 + 符号将两个列表直接相加
language = ['Python', 'C++', 'Java']
birthday = [1991, 1998, 1995]
info = language + birthday
print(info)
['Python', 'C++', 'Java', 1991, 1998, 1995]
# 2.insert() 在指定的位置插入元素,insert() 操作后改变的是原列表,不会生成新列表
# 语法:列表名.insert(下标, 待插入的目标元素)
name = ['张', '你好']
name.insert(1, '三')
print(name)

# 插入元组,把元组当成一个整体进行插入到指定的位置
tup = ('你', '太', '狂')
name.insert(2, tup)
print(name)
['张', '三', '你好']
['张', '三', ('你', '太', '狂'), '你好']
# 3.append() 在末尾追加元素
# 语法 列表名.append(obj) 把obj添加到列表的末尾
skill = ['HTML', 'CSS', "JavaScript"]
skill.append('PHP')
print(skill)
t = ('a', 'c', 'e') # t作为整体添加到末尾
skill.append(t)
print(skill)
    ['HTML', 'CSS', 'JavaScript', 'PHP']
['HTML', 'CSS', 'JavaScript', 'PHP', ('a', 'c', 'e')]
# 4.extend()
# 语法:列表名.extend(obj) 在列表末尾添加obj,并且把obj中的元素拆分成单个
ran = ['a', 'b', 'c']
obj = ['123', '456', '789']
ran.extend(obj)
print(ran)
obj2 = ('ee', 'f', 'g')
ran.extend(obj2) # extend 会将元组中的元素进行拆分后再插入
print(ran)

### 小结:想将一个列表作为整体插入,使用 元组 的 append() ,想打散元素,使用 extend()
    ['a', 'b', 'c', '123', '456', '789']
['a', 'b', 'c', '123', '456', '789', 'ee', 'f', 'g']
# 二、修改元素
# 修改元素本质是赋值操作
# 1.修改单个元素
nums = [1, 4, 3, 2, 5]
nums[2] = -10 # 通过下标访问到指定元素,然后再给该元素赋新值
print(nums)
    [1, 4, -10, 2, 5]
# 2.修改一组元素,注意:修改一组元素时,右边必须是 [],因为一组的实例是列表而非元素
nums = [1, 4, 3, 2, 5]
nums[2:5] = [10, 20, 30] # 左右两边个数一致,将下标从2到5(不包含)赋值10,20,30
print(nums)
nums[1:3:2] = [-1] # 步长为2,即从下标1到3,间隔一个插入,左右两边个数要一致,下标1到3,间隔1个,那其实只能插入1个元素,因此右边只能有一个元素
print(nums)

# 特殊情况:对空切片赋值,对应下标前插入所有元素
nums2 = [1, 4, 3, 2, 5]
print(nums2[4:4])
nums2[4:4] = [-1, -3] # 从下标为4的前面插入所有元素
print(nums2)

nums2[4:4] = 0 # 注意:修改一组元素时,右边必须是 [],因为一组的实例是列表而非元素
print(nums2)
    [1, 4, 10, 20, 30]
[1, -1, 10, 20, 30]
[]
[1, 4, 3, 2, -1, -3, 5]



---------------------------------------------------------------------------

TypeError Traceback (most recent call last)

Cell In[20], line 14
11 nums2[4:4] = [-1, -3] # 从下标为4的前面插入所有元素
12 print(nums2)
---> 14 nums2[4:4] = 0 # 注意:修改一组元素时,右边必须是 [],因为一组的实例是列表而非元素
15 print(nums2)


TypeError: must assign iterable to extended slice


# 三、删除元素
# 1.del 删除整个列表
s = list('hello') # 把字符串转换成列表
print(type(s))
print(s)
del s # 整个列表进行删除
print(s)
    <class 'list'>
['h', 'e', 'l', 'l', 'o']



---------------------------------------------------------------------------

NameError Traceback (most recent call last)

Cell In[21], line 7
5 print(s)
6 del s # 整个列表进行删除
----> 7 print(s)


NameError: name 's' is not defined


# del listname[index] 通过索引删除单个值
s = [1, 2, 3, 4]
del s[1]
print(s)
    [1, 3, 4]
# del 删除多个值
s = [1, 2, 3, 4, 5, 6]
del s[2:5]
print(s)
    [1, 2, 6]
# 2.pop() 根据下标进行删除
# 语法:listname.pop(index) index 不写,默认会删除列表中的最后一个元素
nums = [0, 1, 2, 3, 4]
nums.pop(2)
print(nums)
nums.pop()
print(nums)
    [0, 1, 3, 4]
[0, 1, 3]
# 3.remove() 根据元素值进行删除,若列表中没有这个元素值,则报错
nums = [0, 1, 2, 3, 4, 2]
nums.remove(2) # 若列表中存在多个该值时,默认删除第一个
print(nums)
nums.remove(9) # 若列表中没有这个元素值,则报错
print(nums)
    [0, 1, 3, 4, 2]
---------------------------------------------------------------------------

ValueError Traceback (most recent call last)

Cell In[27], line 5
3 nums.remove(2) # 若列表中存在多个该值时,默认删除第一个
4 print(nums)
----> 5 nums.remove(9)
6 print(nums)


ValueError: list.remove(x): x not in list
# 4.clear() 删除列表中的所有元素,即清空列表
nums = [0, 1, 2, 3, 4, 2]
nums.clear()
print(nums)

### 小结:根据位置索引删除,用 del 或 pop
### 根据值进行删除,用 remove
### 清空列表,用 clear
    []
# 四、查找元素
# in 存在,在 ... 里面 True,否则为 False
# not in 不在 True,否则为 False
list1 = ['Tom', 'Lucky', 'Bob']
name = input('需要查找的名字是:')
if name in list1:
print('找到了')
else:
print('找不到')

需要查找的名字是: tom


找不到
# 2.count() 用来统计某个元素在列表中出现的次数
# listname.count(obj) # obj 表示要统计的元素
# count 若返回0,则表示列表中不存在该元素,因此可用count()方法来判断列表中某个元素是否存在
nums = [0, 1, 2, 3, 4, 2]
print(nums.count(2))

if nums.count(100): # count>0的情况,则表示条件为真,会执行if里面的语句
print('100在列表里')
else: # count次数为0,在Python的if判断中返回0代表False,则会执行else里的语句
print('100不在列表里')
    2
100不在列表里
# 3.index() 查找某个元素在列表中首次出现的位置
# 语法:listname.index(obj, start, end) start:开始索引 end:结束索引
nums = [0, 1, 2, 3, 4, 2]
print(nums.index(2))
    2
# 五、列表的排序
# 1.reverse() 把原列表顺序倒置,逆置(只是顺序上的倒置),注意:reverse操作是直接在原列表上进行修改,原列表会被修改掉
li1 = [1, 4, 3, 6]
print(f'原列表:{li1}')
li1.reverse()
print(f'reverse()后的列表:{li1}')
    原列表:[1, 4, 3, 6]
reverse()后的列表:[6, 3, 4, 1]
# 2.sort() 排序,只能用于list的排序,默认从小到大升序排序,sort操作是直接改变原列表的
li1 = [1, 4, 3, 6]
li1.sort()
print(li1)
# 你直接使用 print(li1.sort()) 会返回 None的,因为sort()的返回值是None,它直接是对原对象进行了修改
li1.sort(reverse=True)
print(li1)

# 拓展
# sort 只应用于list列表的方法
# sorted() 是内建函数,可以应用到字符串,列表,元组等
l2 = [1, 4, 3, 2]
b = sorted(l2) # 注意:sorted() 函数是会生成一个新的对象的,不会修改掉原始对象的
print(b)

t2 = (1, 4, 3, 2)
print(sorted(t2))

str2 = 'acdebf'
print(sorted(str2))

[1, 3, 4, 6]
[6, 4, 3, 1]
[1, 2, 3, 4]
[1, 2, 3, 4]
['a', 'b', 'c', 'd', 'e', 'f']