python列表、元组、字典、集合的常用操作

1.列表

# 添加
zi = ['a', 'b', 'c']
print(zi)
# 在列表的最后添加数据
zi.append("d")
print(zi)
# 在列表的指定下标添加数据
zi.insert(1, 'b')
print(zi)

mu = ['e', 'f']
# 拼接二个列表
zi.extend(mu)
print(zi)

# 删除
name = ['张三', '李四', '王二', '小强']
# 删除并返回这个数据
x = name.pop()
# 根据下标删除
# name.pop(1)
print(x)
print(name)

# 删除指定元素,如果列表中不存在该元素则会报错
name.remove("张三")
print(name)

# 清空一个列表
name.clear()
print(name)

ha = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'a']
# 返回指定元素的下标,如果没有该元素则会报错
print(ha.index('c'))
# 返回指定元素出现的次数
print(ha.count('a'))

# 判断指定元素是否在列表中存在,如果存在返回True,不存在返回False
print('gd' in ha)


# 修改
print(ha)
# 根据下标修改指定位置的元素
ha[2] = "aa"
print(ha)

# 遍历:将所有的数据都访问一遍,遍历针对的是可迭代对象
# while / for..in..循环遍历

k = ['a', 'b', 'c', 'd', 'e', 'f']
# for..in 循环的本质就是不断的调用迭代器的next方法查找下一个数据
for ks in k:
    print(ks)

i = 0
while i < len(k):
    print(k[i])
    i += 1

# 反转列表
f = ['a', 'b', 'c']
f.reverse()
print(f)
print(f[::-1])

# 获取列表的最大值和最大值的下标
x = num[0]
for n in num:
    if n > x:
        # 不成立
        x = n
print(x, num.index(x))

# 获取列表的最大值和最大值的下标
i = 0
x = num[0]
while i < len(num):
    if num[i] > x:
        x = num[i]
        index = i
    i += 1

print(x, index)

2.元组

# 元组和列表很像,都是用来保存多个数据
# 使用一对小括号(),来表示一个元组
# 元组和列表的区别在于,列表是可变的,元组是不可变的数据类型

name = ['a', 'b', 'c']  # 列表使用[]表示
yuan = (1, 2, 3, 2)  # 元组使用()表示

# 元组和列表一样,也是一个有序存储数据的容器
# 也可以通过下标来获取元素
# 元组是不可变数据类型,不能修改
print(yuan[2])

# 获取指定元素的索引
print(yuan.index(2))
# 获取指定字符出现的次数
print(yuan.count(2))

# 特殊情况:如何表示只有一个元素的元组
age = (12)  # 这种情况age只是一个整数,并不是一个元组
ages = (12,)  # 如果元组里就一个数据,需要在数据后面加逗号,

# 列表和元组之间的相互转换
w = [1, 2, 3]
s = (1, 2, 3)
# 列表转元组
print(tuple(w))
# 元组转列表
print(list(s))

3.字典

# 列表可以存储任意的数据类型,但一般情况下,只存储单一的数据类型
# 如:一个名称的列表只存名称,成绩的列表只存成绩
# 列表只能存储值,但无法对值进行描述

# 字典不仅可以保存值,还可以对值进行描述
# 使用大括号{}来表示一个字典,不仅有值value,还有值的描述key
# 字典里的数据都是以键值对(key-value)的形式保留的
# key和value之间用冒号:来连接
# 字典的key不允许重复,如果key重复了,后一个key的值会覆盖前一个
# 字典里的value可以是任何数据类型,但是key只能使用不可变数据类型,一般使用字符串

person = {
    
    "username": "zhang", "age": 18, "score": 88, "china": 90}

# 字典的常用操作

# 查找数据(字典里保存的数据是无序的,所以不能使用索引来获取)
# 使用key获取对应的value,如果查找的key不存在,则会报错
print(person["username"])
# 使用字典的get()方法,通过key获取value如果不存在不会报错,会返回默认值None
print(person.get("aa"))
# 如果key获取不到value,会返回指定的默认值
print(person.get("aa", "这是默认值"))

# 修改
# 可以根据key修改value,如果key不存在,则添加一个新的key和value
person["username"] = "aaa"
print(person)

# 删除
# 删除指定的key的key-value,返回的结果是被删除的人
# person.pop("age")
# print(person)
# 删除一个数据,并返回删除数据key-value
result = person.popitem()
print(result)
print(person)
person.clear()
print(person)

# 合并字典
person1 = {
    
    1, 2, 3}
person2 = {
    
    4, 5, 6}
person1.update(person2)
print(person1)

# 合并元组
# 由于元组是不可变元组数据类型,所以合并元组合并的并不是之前的元组,而是新成了一个新的
person3 = (1, 2, 3)
person4 = (4, 5)
print(person3 + person4)

# 合并列表
person5 = [1, 2, 3]
person6 = [4, 4, 3]
person5.extend(person6)

# 字典遍历
person = {
    
    "username": "zhao", "age": 23, "address": "上海"}

# 第一种遍历方式
# for..in遍历出来的数据是key,可通过key去获取value
for p in person:
    # print(p)
    print(p, "=", person[p])

# 第二种遍历方式
# 先获取所有的key,然后遍历key获取value
for k in person.keys():
    # print(k)
    print(k, "-", person[k])

# 第三种遍历方式
# 直接获取字典里的value,但不能拿到key
for l in person.values():
    print(l)

# 第四种遍历方式
for r in person.items():
    print(r[0], "=", r[1])

# 第五种遍历方式:拆包
for z, v in person.items():
    print(z, '=', v)
    
# 把字典里的key-value反过来
# 第一种
person = {
    
    "username": "zhao", "age": 12}
new_person = {
    
    }

for c, v in person.items():
    new_person[v] = c
person = new_person
print(person)

# 第二种:字典推导式
person = {
    
    v: k for k, v in person.items()}
print(person)  

字典的示例

# 让用户输入姓名,如果姓名已存在,提示用户
# 如果用户不存在,继续输入年龄并存入列表里

person = [{
    
    "name": "zhao", "age": 12}, {
    
    "name": "zha", "age": 15}]

n = input("请输入姓名")
for p in person:
    if p["name"] == n:
        print("已有")
        break
else:
    print("没有")
    new_person = {
    
    "name": n}
    a = int(input("请输入年龄"))
    new_person["age"] = a
    person.append(new_person)
    print("添加成功")
print(person)

4.集合

# 集合是一个不可重复、且无序的元素,可以使用{}或者set来表示
# {}有二种意思,字典、集合
# {}里面放的如果是键值对,则是字典
# {}里面如果放的是单个的值,则是集合
person = {
    
    "name": "zhao", "age": 12}  # 字典
p = {
    
    12, "zhao", "aa"}  # 集合

# 如果有重复的数据会自动的去重复
names = {
    
    "zhao", "qian", "sun", "li", "li", "qian"}
print(names)

# 添加数据
names.add("zhou")
print(names)

# 清空接和,空集合的表示set()
# names.clear()
# print(names)

# 随机删除一个数据
# names.pop()
# print(names)

# 删除指定的元素,如果元素不存在会报异常
# names.remove("qian")
# print(names)

# 将多个集合并生成一个新的订单
print(names.union({
    
    "aaa", "bbb"}))
print(names)

5.相互转换

# 内置类 list set tuple
nums = [2, 9, 2, 5, 4, 8]

# 转成元组
t = tuple(nums)
print(t)

# 转成set
s = set(nums)
print(s)

# 转成list
l = list(nums)
print(l)

# 执行字符串里面的代码
a = 'input("请输入内容")'
print(a)
print(eval(a))

# 将元组、字典、集合、列表等转换成json
# json里面只能使用双引号""
# json的本质就是一个字符串
import json
person = {
    
    'age': 12, "name": "zhao", "address": "shanghai"}
# 转成json
m = json.dumps(person)
print(m)
t = type(m)
# 把json转成对应的内容
g = json.loads(m)
print(g)
print(type(g))

6.公共方法

# + 可以用来拼接,用于字符串、列表、元组
print("hello" + "s")
print(("a", "b") + ("c",))
print([1, 2] + [3, 4])

# - 只能用于集合,求差集
print({
    
    1, 3} - {
    
    1})

# * 可以用于字符串、列表、元组,表示重复多次
# 不能用于字典和集合
print("he" * 3)

# in 成员运算符
print('a' in 'abc')
print(1 in [1, 2, 3])
print(1 in (1, 3))
# 只能判断key是否存在
print("name" in {
    
    "name": "zhao", "age": 12})

猜你喜欢

转载自blog.csdn.net/javaasd/article/details/108472638