2021-02-27

人工智能学习第4天_Python学习_字典、序列、集合、条件控制语句、

1. 创建字典字典({}、dict{}、zip()、fromkeys())

①  通过{}、dict()

>>> a = {'name':'gaoqi','age':18,'job':'programmer'}
>>> b = dict(name='gaoqi',age=18,job='programmer')
>>> a = dict([("name","gaoqi"),("age",18)])
>>> c = {} #空的字典对象
>>> d = dict() #空的字典对象

② 通过zip()创建字典对象

>>> k = ['name','age','job']
>>> v = ['gaoqi',18,'techer']
>>> d = dict(zip(k,v))
>>> d
{'name': 'gaoqi', 'age': 18, 'job': 'techer'}

③ 通过fromkeys 创建值为空的字典
>>> a = dict.fromkeys(['name','age','job'])
>>> a
{'name': None, 'age': None, 'job': None}

2. 字典元素的访问([]、get()、items、keys、values、in)

① 通过[键] 获得“值”。若键不存在,则抛出异常。

>>> a = {'name':'gaoqi','age':18,'job':'programmer'}
>>> a['name']
'gaoqi'

>>> a['sex']
Traceback (most recent call last):
File "<pyshell#374>", line 1, in <module>
a['sex']
KeyError: 'sex'

② 通过get()方法获得“值”。推荐使用。优点是:指定键不存在,返回None

>>> a.get('name')
'gaoqi'
>>> a.get('sex')
>>> a.get('sex','一个男人')
'一个男人'

③ 列出所有的键值对
>>> a.items()
dict_items([('name', 'gaoqi'), ('age', 18), ('job', 'programmer')])

④ 列出所有的键,列出所有的值
>>> a.keys()
dict_keys(['name', 'age', 'job'])
>>> a.values()
dict_values(['gaoqi', 18, 'programmer'])

⑤ len() 键值对的个数

⑥ 检测一个“键”是否在字典中

>>> a = {"name":"gaoqi","age":18}
>>> "name" in a
True

3.字典元素的增加、修改、删除(update()、del()、clear()、pop()、popitem())

① 给字典新增“键值对”。如果“键”已经存在,则覆盖旧的键值对;如果“键”不存在,
则新增“键值对”。
>>>a = {'name':'gaoqi','age':18,'job':'programmer'}
>>> a['address']='西三旗1 号院'
>>> a['age']=16
>>> a
{'name': 'gaoqi', 'age': 16, 'job': 'programmer', 'address': '西三旗1 号院'}

② 使用update()将新字典中所有键值对全部添加到旧字典对象上。如果key 有重复,则直
接覆盖。
>>> a = {'name':'gaoqi','age':18,'job':'programmer'}
>>> b = {'name':'gaoxixi','money':1000,'sex':'男的'}
>>> a.update(b)
>>> a
{'name': 'gaoxixi', 'age': 18, 'job': 'programmer', 'money': 1000, 'sex': '男的'}
③ 字典中元素的删除,可以使用del()方法;或者clear()删除所有键值对;pop()删除指定
键值对,并返回对应的“值对象”;
>>> a = {'name':'gaoqi','age':18,'job':'programmer'}
>>> del(a['name'])
>>> a
{'age': 18, 'job': 'programmer'}
>>> b = a.pop('age')
>>> b
18

④ popitem() :随机删除和返回该键值对。字典是“无序可变序列”,因此没有第一个元
素、最后一个元素的概念;popitem 弹出随机的项,因为字典并没有"最后的元素"或者其
他有关顺序的概念。若想一个接一个地移除并处理项,这个方法就非常有效(因为不用首先获取键的列表)。
>>> a = {'name':'gaoqi','age':18,'job':'programmer'}
>>> a.popitem()
('job', 'programmer')
>>> a
{'name': 'gaoqi', 'age': 18}
>>> a.popitem()
('age', 18)
>>> a
{'name': 'gaoqi'}
4. 序列解包:items()、values()

5. 表格数据使用字典和列表存储,并实现访问 :  tb = [r1,r2,r3]

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

① 将一个键值对放进字典的底层过程,接近2/3 时,数组就会扩容。

>>> a = {}
>>>
a["name"]="gaoqi"

>>> bin(hash("name"))
'-0b1010111101001110110101100100101

② 根据键查找“键值对”的底层过程

>>> a.get("name")
'gaoqi'

>>> bin(hash("name"))
'-0b1010111101001110110101100100101

③ 用法总结:
    1. 键必须可散列
     (1) 数字、字符串、元组,都是可散列的。
     (2) 自定义对象需要支持下面三点:

        ①支持hash()函数
        ② 支持通过__eq__()方法检测相等性。
        ③若a==b 为真,则hash(a)==hash(b)也为真。
    2. 字典在内存中开销巨大,典型的空间换时间。
    3. 键查询速度很快
    4. 往字典里面添加新建可能导致扩容,导致散列表中键的次序变化。因此,不要在遍历字
    典的同时进行字典的修改。

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

① 集合创建和删除:使用{}创建集合对象,并使用add()方法添加元素
>>> a = {3,5,7}
>>> a
{3, 5, 7}
>>> a.add(9)
>>> a
{9, 3, 5, 7}

② 使用set(),将列表、元组等可迭代对象转成集合。如果原来数据存在重复数据,则只保留一个。
>>> a = ['a','b','c','b']
>>> b = set(a)
>>> b
{'b', 'a', 'c'}

③ remove()删除指定元素;clear()清空整个集合
>>> a = {10,20,30,40,50}
>>> a.remove(20)
>>> a
{40,10, 50, 30}

>>> a.clear()
>>> a
set()
④ 集合相关操作:a|b、a&b、a-b、a.union(b)、a.intersection(b)、a.difference(b)

8. 控制语句   :   ·条件表达式中,不能有赋值操作符“=”

① 单分支控制语句

if 语句单分支结构的语法形式如下:
    if 条件表达式:
          语句/语句块

num = input("输入一个数字:")
    if int(num)<10:
          print(num)

② 双分支控制语句

双分支结构的语法格式如下:
    if 条件表达式:
         语句1/语句块1
    else:
         语句2/语句块2

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

 if int(num)<10:
     print(num)
 else:
     print("数字太大")

③ 三元条件运算符: 条件为真时的值   if (条件表达式) else  条件为假时的值

num = input("请输入一个数字")
print( num if int(num)<10 else "数字太大")

④ 多分支选择结构

多分支选择结构的语法格式如下:
    if 条件表达式1 :
        语句1/语句块1
    elif 条件表达式2:
        语句2/语句块2
     .
     .
     .
     elif 条件表达式n :
         语句n/语句块n
     [else:
         语句n+1/语句块n+1
     ]

⑤ 选择结构嵌套

    语法格式如下:
          if 表达式1:
                语句块1
                if 表达式2:
                     语句块2
                else:
                     语句块3
         else:
               if 表达式4:

                     语句块4

  9. 循环结构:while循环

                   

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值