第1001次python入门——Day06

目录

元组的使用

#元组和列表很像,都是用来保存多个数据
#使用一对小括号()来表示
#元组和列表的区别,列表可变,元组是不可变的
words = ['hello', 'yes', 'good', 'hi']  #列表,使用[]表示
nums = (9, 4, 3, 1, 7, 6, 9) # 元组,使用()来表示

# 和列表一样,也是一个有序的存储数据的容器
#可以通过下标来获取元素
print(nums[3])
# nums[3] = 40  #元组是不可变数据类型,不能修改
print(nums.index(7))
print(nums.count(9))

# 特殊情况:如何表示只有一个元素的元组,需要在后面加上 ',' 逗号
#ages = (18)   # 这种书写方式,ages是一个整数
ages = (18,)
print(type(ages))

# tuple 内置类
# print(tuple(18))
print(tuple('hello'))  # ('h', 'e', 'l', 'l', 'o')

# 怎样把列表转换为元组?元组转换为列表?
print(tuple(words))  # tuple list set都是这样用的
print(list(nums))

#元组也可以遍历
for i in nums:
    print(i)

j = 0
while j < len(nums):
    print(nums[j])
    j += 1

字典的使用

# 列表一般情况下可以存储任意数据类型,但是一般情况下,我们存储单一数据类型
names = ['zhangsan', 'lisi', 'wnagwu']
scores = [100, 98, 99, 97]

#这个列表里面的每个元素到底代表的什么?
#列表只能存储值,但是无法对值进行描述
# person = ['zhangsan', 18, 98, 97, 95, 93, 180, 150]


# 字典不仅能保存值,还能对值进行描述
# 使用大括号来表示一个字典,不仅有值value,还有值key
# 字典里的数据都是以键值对key-value的形式保留的
# key和value之间使用冒号:来连接

# 多个键值对之间使用逗号,来分割
person = {'name': 'zhangsan',
          'age': 18,
          'math': 98,
          'Cinese': 95,
          'English': 95,
          'PE': 93,
          'height': 180,
          'weight': 100
          }

字典使用注意事项

person = {
    'name': 'zhangsan',
    'age': 18,
    'height': 180,
    'age': 20,
    'isPass': True,  #可以是bool值
    'hobbies': ['唱', '跳', '篮球', 'rap'], # 也可以是列表
    4: 'good',  # key只能是不可变数据类型
    ('yes', 'hello'): 100,
    # ['ok', 'no']: 'hi'   #注意:key只能是不可变数据类型
}

# 1.字典里的key不允许重复,如果key重复,后一个key对应的值会覆盖前一个
# 2.字典里的value可以是任意数据类型,但是key只能使用不可变数据类型,一般使用字符串
print(person) # {'name': 'zhangsan', 'age': 20, 'height': 180}

从字典里获取数据

person = {'name': 'zhangsan', 'age': 18, 'x': 'y'}

# 查找数据(字典的数据在保存时,是无序的,所以不能用下标来获取)
print(person['name'])  #使用key获取到对应value
# print(person['height'])  查找的key不存在会直接报错

# 需求:获取一个不存在的key时,不报错,如果这个key不存在,使用默认值
# 使用字典的get方法,如果key不存在,会默认返回None,而不报错
# get方法只是设定默认值,不会往列表里面添加元素
print(person.get('height'))  #None

# 如果根据key获取不到value,使用给定的默认值
print(person.get('gender', 'female'))  # female
print(person.get('name', 'lisi'))  # zhangsan

print(person)



# x = 'age'
# print(person[x])
# print(person['x'])

修改,新增和删除数据

person = {'name': 'zhangsan', 'age': 18, 'addr': 'Beijing'}
print(person['name'])

# 直接使用key可以修改对应的value
person['name'] = 'lisi'

# 如果key存在,是修改对应的value;
# 如果key在字典里不存在,会往字典里添加一个新的key-value

person['gender'] = 'female'
print(person)

# 删除name对应的键值(非键值对)
person.pop('name')
print(person)


#popitem删除一个元素,结果是被删除的这个元素组成的键值对
result = person.popitem()
print(result)
print(person)


del person['addr']
print(person)

person.clear()  # 用来清空一个字典
print(person)   # {}

update方法的使用

# 列表可以使用extend方法将两个列表合并成一个列表
nums1 = [1, 2, 3, 4, 5]
nums2 = [6, 7, 8, 9]
nums1.extend(nums2)
print(nums1)

words1 = ('hello', 'good')
words2 = ('yes', 'ok')
print(words1 + words2)  # ('hello', 'good', 'yes', 'ok')words1,words2都没有变


person1 = {'name': 'zhangsan', 'age': 18}
person2 = {'addr': 'Beijing', 'height': 180}
person1.update(person2)
print(person1)

# print(person1 + person2) 注意:字典之间不支持加法运算

字典的遍历

person = {'name': 'zhangsan', 'age': 18, 'addr': 'Beijing'}

# 特殊在列表和元组是单一的数据,但是字典的键值对的形式

# 第一种遍历方式:直接for in 循环
for x in person:   #for in循环获取的是key
    print(x, '=', person[x])

# 第二种方式:获取到所有的key,然后再遍历key, 根据key获取value
print(person.keys())   # dict_keys(['name', 'age', 'height'])
for k in person.keys():
    print(k, '=', person[k])

# 第三种方式:获取到所有value,只有值,没有key
for v in person.values():
    print(v)

# 第四种方式:
# print(person.items())   # dict_items([('name', 'zhangsan'), ('age', 18), ('addr', 'Beijing')])
# for item in person.items():  # 列表里的元素是元组,把元组当做整体进行遍历
#     print(item[0], '=', item[1])

for k, v in person.items():
    print(k, '=', v)

字典的练习

chars = ['p', 'a', 'b', 'x', 'd', 'p', 'a', 'm', 'q', 't', 'p', 'a', 't', 'c']

char_count = {}  # 设置一个字典

for char in chars:
    if char in char_count:
        print('字典里面已经有字符了%s' % char)
        char_count[char] += 1
    else:
        char_count[char] = 1
        print('字典里面没有这个字符%s' % char)

print(char_count)

char_count2 = {}

for char in chars:
    if char not in char_count2:
        char_count2[char] = chars.count(char)

print(char_count2)

# print(words.count('a'))

vs = char_count.values()

# 取最大数可以使用内置函数max

max_count = max(vs)

for k, v in char_count.items():
    if v == max_count:
        print(k)

字典的练习

persons = [
    {'name': 'zhangsan', 'age': 18},
    {'name': 'lisi', 'age': 20},
    {'name': 'wangwu', 'age': 19},
    {'name': 'jerry', 'age': 21}
]

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

x = input('请输入您的姓名:')

for person in persons:
    # if name in person:  # in 运算符,如果直接用在字典上,是用来判断key是否存在,而不是value
    if person['name'] == x:
        print('您输入的名字存在')
        break
else:
    print('名字不存在')
    # 创建一个新的字典 new_person
    new_person = {'name': x}
    y = int(input('请输入你的年龄:'))
    new_person['age'] = y

    ##把这个新的数据存储到 persons 列表里面

    persons.append(new_person)
    print('用户添加成功')

print(persons)

字典的练习

dict1 = {"a": 100, "b": 200, "c": 300}

dict2 = {}

# for k, v in dict1.items():
#     dict2[v] = k
# print(dict2)   #{100: 'a', 200: 'b', 300: 'c'}

dict1 = {v: k for k, v in dict1.items()}   # 字典推导式
print(dict1)   #{100: 'a', 200: 'b', 300: 'c'}


#{100:"a", 200:"b", 300:"c"}
上一篇:位运算符


下一篇:排查指南 | 当 mPaaS 小程序提示“应用更新错误(1001)”时