Python基础知识(Day 4)——字典、集合、控制语句学习

本文介绍了Python的基础知识,包括字典的创建和更新,如通过`a['address']='普陀区'`进行键值对添加;字典解包的小练习,用于存储和访问表格数据;集合的创建与删除,如`a = {3,5,7}`和`set()`的使用;以及控制语句,包括不同类型的循环结构。" 111656060,10496981,C++实现:找出单词接龙的最长长度,"['C++', '字符串算法']
摘要由CSDN通过智能技术生成

3 字典

一个典型的字典的定义方式:
        a = {'name':'gaoqi','age':18,'job':'programmer'}
3.1 字典的创建
 #通过{}、dict()来创建字典对象
a = {'name':'gaoqi','age':18,'job':'programmer'} 
b = dict(name='gaoqi',age=18,job='programmer')
#通过 zip()创建字典对象
>>> d = dict(zip(k,v))
#通过 fromkeys 创建值为空的字典
>>> a = dict.fromkeys(['name','age','job'])  # 值都是None
3.2 字典元素的访问
#通过 [键] 获得“值”
>>> a['name']
#通过 get()方法获得“值”
>>> a.get('name')
>>> a.get('sex','NO')  #指定键不存在,也可以设定指定键不存在时默认返回的对象
#列出所有的键值对
>>> a.items()
#列出所有的键,列出所有的值
>>> a.keys()
>>> a.values()
#len() 键值对的个数
#检测一个“键”是否在字典中
>>> "name" in a
3.2 字典元素添加、修改、删除

#给字典新增“键值对”

>>>a = {'name':'gaoqi','age':18,'job':'programmer'}
>>>a['address']='西三旗 1 号院'
>>>a
>>>{'name': 'gaoqi', 'age': 18, 'job': 'programmer', 'address': '西三旗 1 号院'}
>>>a['address']='普陀区'
>>>a
>>>{'name': 'gaoqi', 'age': 18, 'job': 'programmer', 'address': '普陀区'}

#使用 update()将新字典中所有键值对全部添加到旧字典对象上。如果 key 有重复,则直
接覆盖
>>> a.update(b)
#字典中元素的删除,可以使用 del()方法;或者 clear()删除所有键值对;pop()删除指定
键值对,并返回对应的“值对象”
>>> del(a['name'])
>>> b = a.pop('age')
#popitem() :随机删除和返回该键值对
>>> a.popitem()

3.3 字典解包

>>> name,age,job=s
#默认对键进行操作
>>> name,age,job=s.items()
#对键值对进行操作
>>> name,age,job=s.values()
#对值进行操作
s = {'name':'gaoqi','age':18,'job':'teacher'}
name,age,job=s
name
'name'
name,age,job=s.items()
name
('name', 'gaoqi')
name,age,job=s.values()
name
'gaoqi'

小练习:表格数据使用字典和列表存储,并实现访问

r1 = {"name":"高小一","age":"18","salary":"30000","city":"北京"}
r2 = {"name":"高小二","age":"19","salary":"20000","city":"上海"}
r3 = {"name":"高小五","age":"20","salary":"10000","city":"深圳"}

tb = [r1,r2,r3]

# 获得第二行的人的薪资
print(tb[1].get("salary"))


# 打印表中所有的薪资
for i in range(len(tb)):
    print(tb[i].get("salary"))
    
# 打印表中所有的数据
for i in range(len(tb)):
    print(tb[i].get("name"),tb[i].get("age"),tb[i].get("salary"),tb[i].get("city"))

3.4 字典核心底层原理(重要)

1. 键必须可散列
(1) 数字、字符串、元组,都是可散列的。
(2) 自定义对象需要支持下面三点:
        1 支持 hash()函数
        2 支持通过__eq__()方法检测相等性。
        3 若 a==b 为真,则 hash(a)==hash(b)也为真。
2. 字典在内存中开销巨大,典型的空间换时间。
3. 键查询速度很快
4. 往字典里面添加新建可能导致扩容,导致散列表中键的次序变化。因此,不要在遍历字
典的同时进行字典的修改

4 集合

集合是无序可变,元素不能重复。实际上,集合底层是字典实现,集合的所有元素都是字典
中的“键对象”,因此是不能重复的且唯一的。

 4.1 集合创建和删除

#使用{}创建集合对象,并使用 add()方法添加元素

>>> a = {3,5,7}

>>> a.add(9)
>>> a
{9, 3, 5, 7}

#使用 set(),将列表、元组等可迭代对象转成集合。如果原来数据存在重复数据,则只保

留一个。
a = ['a','b','c','b']
b = set(a)
b
{'c', 'b', 'a'}
#remove()删除指定元素;clear()清空整个集合
a = {10,20,30,40,50}
a.remove(20)
a
{50, 40, 10, 30}
a.clear()
a
set()
 4.2 集合相关操作
>>> a = {1,3,'sxt'}
>>> b = {'he','it','sxt'}
>>> a|b #并集
{1, 3, 'sxt', 'he', 'it'}
>>> a&b #交集
{'sxt'}
>>> a-b #差集
{1, 3}
>>> a.union(b) #并集
{1, 3, 'sxt', 'he', 'it'}
>>> a.intersection(b) #交集
{'sxt'}
>>> a.difference(b) #差集
{1, 3}

 第三章作业

第四章  控制语句 

1.1 单分支选择结构
if 语句单分支结构的语法形式如下:
if 条件表达式:
语句/语句块
其中:
1 .条件表达式:可以是逻辑表达式、关系表达式、算术表达式等等。
2 .语句/语句块:可以是一条语句,也可以是多条语句。多条语句,缩进必须对齐一致。


num = input("输入一个数字:")

if int(num)<10:
    print(num)

·条件表达式中,不能有赋值操作符“=”

1.2 双分支选择结构

双分支结构的语法格式如下:

if 条件表达式 :

        语句 1/语句块 1

else:

        语句 2/语句块 2

        

a = input("请输入一个数字:")

if int(a)<10:
    print("a是小于10的数字")
else:
    print("a是大于等于10的数字")

 1.3 三元条件运算符

Python 提供了三元运算符,用来在某些简单双分支赋值情况。三元条件运算符语法格式如
下:
条件为真时的值  if  (条件表达式)  else 条件为假时的值
a = input("请输入一个数字:")
print("a是小于10的数字") if int(a)<10 else print("a是大于等于10的数字")

 1.4 多分支选择结构

 

 

score = int(input("请输入分数"))
grade = ""

if score<60:
    grade = "不及格"
elif score<80:
    grade = "及格"
elif score<90:
    grade = "良好"
else:
    grade = "优秀"

print("分数是{0},等级是{1}".format(score,grade))


请输入分数70
分数是70,等级是及格
1.5 选择结构嵌套
   
        选择结构可以嵌套,使用时一定要注意控制好不同级别代码块的缩进量,因为缩进量决定了
代码的从属关系。
语法格式如下:
        if 表达式 1:
                语句块 1
                if 表达式 2:
                        语句块 2
                else:
                        语句块 3
        else:
                if 表达式 4:
                        语句块 4

2 循环结构

循环结构用来重复执行一条或多条语句。表达这样的逻辑:如果符合条件,则反
复执行循环体里的语句。在每次执行完后都会判断一次条件是否为 True,如果
为 True 则重复执行循环体里的语句。图示如下:

 2.1 while 循环

 while 循环的语法格式如下:

                while 条件表达式:
                                循环体语句

num = 0
sum_0 =0
sum_1 = 0 #计算奇数和
sum_2 = 0 #计算偶数和
while (num<=100):
    sum_0 += num
    if (num%2==0):
        sum_2 += num
    else:
        sum_1 += num
    num += 1
print(sum_0,sum_1,sum_2)

5050 2500 2550

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值