list的基础操作

names = ["张三", "李四", "王五", "赵六"]

1、增

names.append("liyang")  # 向列表后面追加
print(names)
#输出结果:['张三', '李四', '王五', '赵六', 'liyang']
names.insert(1, "wu")  # 插入到指定的位置,下标1
print(names)
#输出结果:['张三', 'wu', '李四', '王五', '赵六', 'liyang']
2、删
# 删
names.remove("li") #删除所有值为li的元素

# del names[0] 效果等价于 names.pop(0)
names.pop()  # 如果不给定index,会默认删除列表尾部的元素
3、改
names[2] = "li"
print(names)
4、查
print(names[1], names[2]) #查看下标为1,2的元素
print(names[0:3])   # 切片,打印下标为0,1,2的元素
print(names[:3])  # 和上一句一样,当从第一个元素开始时,下标可以省略
print(names[-1])  # 负数是指从右边开始取数
print(names[-2]) # 输出倒数第二个
print(names[-2:-1]) # 只输出倒数第二个,因为列表左闭右开的特点
print(names[-2:])  # 倒数第二个一直到最后的元素

5、根据元素内容返回下标

print("王五的下标:", names.index("王五"))

# 统计元素出现的次数
print("王五出现的次数:", names.count("王五"))
6、翻转与排序
# 翻转
names.reverse()
# 排序
names.sort()
7、将其他的列表合并过来(追加效果)
names2 = [1, 2, 3]
names.extend(names2)
print(names, names2)

# 输出:['wu', '张三', '王五', '赵六', 1, 2, 3] [1, 2, 3]
8、列表的深浅copy问题
names1 = ["张三", "李四", [1, 2, 3], "王五", "赵六"]
names2 = names1.copy() # 浅copy,只做第一层的copy,可以理解为内层list此处放的是一个内存地址
print(names1, names2)
names1[0] = "wu"
names1[2][2] = 4   # 修改,会影响names2的内层list,无论修改names1还是names2
print(names1)
print(names2)
names3 = names1  # 指向同一块内存(改一处,其他的也会变),和普通的字符串初始化不一样(克隆,并不指向同一地方)

## 使用深copy,使两者的操作完全的不互相影响
# 要引入 copy模块
import copy
names4 = copy.deepcopy(names1)
names1[2][2] = 3
print(names1)
print(names4)

#输出:
['张三', '李四', [1, 2, 3], '王五', '赵六'] ['张三', '李四', [1, 2, 3], '王五', '赵六']
['wu', '李四', [1, 2, 4], '王五', '赵六']
['张三', '李四', [1, 2, 4], '王五', '赵六']
['wu', '李四', [1, 2, 3], '王五', '赵六']
['wu', '李四', [1, 2, 4], '王五', '赵六']
9、列表的循环与切片
names4=['wu', '李四', [1, 2, 4], '王五', '赵六']
print(names4[0:-1:2])  #步长为2
# 上述语句可以写成 print(names4[::2])

for i in names4:
    print(i)
#输出:
['wu', [1, 2, 4]]
wu
李四
[1, 2, 4]
王五
赵六










猜你喜欢

转载自blog.csdn.net/qq_31371757/article/details/80043226
今日推荐