python列表(list数组)二:列表(list数组)元素修改删除

python列表元素修改

单个元素修改

修改单个元素非常简单,直接对元素赋值即可。请看下面的例子:

nums = [10, 20, 89, 2, 36, 50, 7]
nums[2] = -3  #使用正数索引
nums[-3] = -14  #使用负数索引
print(nums)

运行结果:
[10, 20, -3, 2, -14, 50, 7]

使用索引得到列表元素后,通过=赋值就改变了元素的值。

多个列表数据修改

Python 支持通过切片语法给一组元素赋值。在进行这种操作时,如果不指定步长(step 参数),Python 就不要求新赋值的元素个数与原来的元素个数相同;这意味,该操作既可以为列表添加元素,也可以为列表删除元素。

下面的代码演示了如何修改一组元素的值:

nums = [40, 36, 89, 2, 36, 100, 7]
#修改第 1~4 个元素的值(不包括第4个元素)
nums[1: 4] = [45.25, -77, -52.5]
print(nums)
运行结果:
[40, 45.25, -77, -52.5, 36, 100, 7]

如果对空切片(slice)赋值,就相当于插入一组新的元素:

nums = [40, 36, 89, 2, 36, 100, 7]
#在4个位置插入元素
nums[4: 4] = [-77, -52.5, 999]
print(nums)
运行结果:
[40, 36, 89, 2, -77, -52.5, 999, 36, 100, 7]

使用切片语法赋值时,Python 不支持单个值,例如下面的写法就是错误的:

nums[4: 4] = -77

但是如果使用字符串赋值,Python 会自动把字符串转换成序列,其中的每个字符都是一个元素,请看下面的代码:

s = list("Hello")
s[2:4] = "XYZ"
print(s)
运行结果:
['H', 'e', 'X', 'Y', 'Z', 'o']

使用切片语法时也可以指定步长(step 参数),但这个时候就要求所赋值的新元素的个数与原有元素的个数相同,例如:

nums = [40, 36, 89, 2, 36, 100, 7]
#步长为2,为第1、3、5个元素赋值
nums[1: 6: 2] = [0.025, -99, 20.5]
print(nums)
运行结果:
[40, 0.025, 89, -99, 36, 20.5, 7]

python列表元素删除

使用del 语句删除元素

del 可以删除列表中的单个元素,格式为: ``` del listname[index] ``` 其中,listname 表示列表名称,index 表示元素的索引值。

del 也可以删除中间一段连续的元素,格式为:

del listname[start : end]

其中,start 表示起始索引,end 表示结束索引。del 会删除从索引 start 到 end 之间的元素,不包括 end 位置的元素。

list = ['Google', 'catroom', 1997, 2000]

print ("原始列表 : ", list)
del list[2]
print ("删除第三个元素 : ", list)
以上实例输出结果:

原始列表 :  ['Google', 'catroom', 1997, 2000]
删除第三个元素 :  ['Google', 'catroom', 2000]


lang = ["Python", "C++", "Java", "PHP", "Ruby", "MATLAB"]
del lang[1: 4]
print(lang)

lang.extend(["SQL", "C#", "Go"])
del lang[-5: -2]
print(lang)
运行结果:
['Python', 'Ruby', 'MATLAB']
['Python', 'C#', 'Go']

使用pop()方法根据索引值删除元素

Python pop() 方法用来删除列表中指定索引处的元素,具体格式如下:

listname.pop(index)

其中,listname 表示列表名称,index 表示索引值。如果不写 index 参数,默认会删除列表中的最后一个元素,类似于数据结构中的“出栈”操作。

pop() 用法举例:

nums = [40, 36, 89, 2, 36, 100, 7]
nums.pop(3)
print(nums)
nums.pop()
print(nums)
运行结果:
[40, 36, 89, 36, 100, 7]
[40, 36, 89, 36, 100]

大部分编程语言都会提供和 pop() 相对应的方法,就是 push(),该方法用来将元素添加到列表的尾部,类似于数据结构中的“入栈”操作。但是 Python 是个例外,Python 并没有提供 push() 方法,因为完全可以使用 append() 来代替 push() 的功能。

使用remove()方法 根据元素值进行删除

除了 del 关键字,Python 还提供了 remove() 方法,该方法会根据元素本身的值来进行删除操作。

需要注意的是,remove() 方法只会删除第一个和指定值相同的元素,而且必须保证该元素是存在的,否则会引发 ValueError 错误。

remove() 方法使用示例:

nums = [40, 36, 89, 2, 36, 100, 7]
#第一次删除36
nums.remove(36)
print(nums)
#第二次删除36
nums.remove(36)
print(nums)
#删除78
nums.remove(78)
print(nums)
运行结果:
[40, 89, 2, 36, 100, 7]
[40, 89, 2, 100, 7]
Traceback (most recent call last):
    File "C:\Users\mozhiyan\Desktop\demo.py", line 9, in <module>
        nums.remove(78)
ValueError: list.remove(x): x not in list

最后一次删除,因为 78 不存在导致报错,所以我们在使用 remove() 删除元素时最好提前判断一下。

注:Python clear() 用来删除列表的所有元素,也即清空列表,请看下面的代码:

url = list("123","45")
url.clear()
print(url)