zoukankan      html  css  js  c++  java
  • Python基础第四天——字典、布尔值、集合

    一、拾遗

    1、在Python中数据又称为对象,每创建一个对象都会创建三个属性:

    (1)身份:id 

    is 用来比较id,id一样,type和value肯定一样

    (2)类型:type 

    用 type() 查看某一个对象的类型,例:

    type(1)  is('a")可以判断类型是不是一样

    (3)值:value

     == 用来比较值,id不一样,value一定不一样

    2、列表的常用操作

    (1)定义:

    l = [l,'a',[1,2,3]] 相当于 l = list(['a',[1,2,3]])

    列表里可以是任意数据类型

    列表是可变数据类型

    (2)索引

    通过索引取值: [ ]

    中括号中加上索引值,就可以取出列表中的元素名了。

    (3)循环

    <1>根据索引方式循环用while和for

    I、while

    index = 0

    while index < len(l)

      print(l[index])

      index += 1

    II、for

    for i in range(len(l)):

      print(l[i])

    <2>不通过索引方式用for

    for i in l:

     print(i)

    (4)切片

    读操作

    例:

    l[1:5] # 表示切到索引位置1-4的位置,顾首不顾尾

    l[1:5:2]  # 2是步长

    (5)追加

    l.append(元素)

    (6)删除

    删除索引值为0的元素

    del l[0]

    l.pop[0]

    l.remove[0]

    (7)长度

    len(l)

    (8)包含

    元素 in 列表名

    3、元组

    (1)定义:

    t= (l,'a',[1,2,3]])相当于 t = tuple(('a',[1,2,3]))

    元组是不可变数据类型

    注意:当元组里只有一个元素时,最好是加上“”,例:t = ("x",)

    元组本身的元素不可改变,但是元组中的子元素可以改变

    例:

    对元组本身的元素进行更改会提示错误

     对元组中的元素可以进行更改

    (2)索引

    通过索引取值: [ ]

    (3)循环

    <1>根据索引方式循环用while和for

    I、while

    index = 0

    while index < len(t)

      print(t[index])

      index += 1

    II、for

    for i in range(len(t)):

      print(t[i])

    <2>不通过索引方式用for

    for i in t:

     print(i)

    (4)长度

    len(t)

    (5)切片

    读操作

    通过索引切片: [:]

    例:

    t[1:9:2]  # 表示取索引位置1-8之间的元素,且步长为2。顾首不顾尾

    (6)包含

    通过in

    4、字典

    (1)定义

    d = {“key”:"value"} 或 d = dict({"key":"value"})

    (2) 取值

    d[“key”] = value

    (3)循环

    不通过索引的方式:

    例:

    d = {'x':1,"y":2}

    for k in d:

      print(k)    # 取出字典中的key

      print(d[k]) # 取出字典中的value

     (4)修改

    [ ]来对字典进行修改操作

     d['name'] = 'xiaoxiaobai'   # 将原来的值"xiaobai"改为“xiaoxiaobai”

     (5)嵌套

    (6)字典的其它常用操作

    参考:http://www.cnblogs.com/xiaoxiaobai/p/7615608.html

    <1>item()

    返回可遍历的(键、值)元组数组

    例:

    d = {'x':1,'y':1}

    for item in d.items():  # [('x',1),('y',1)]

      print(item)  # 遍历出每个元组

    <2>变量赋值

    例1:

    k,v = (1,2)

    print(k,v)

    所以在循环字典时可以用两个变量分别表示字典的key和value来循环:

    例2:

    d = {'x':1,'y':1}

    for k,v in d.items():  # k表示字典的key,v表示字典的value

      print(k,v)   # 取出字典里的键和值:x 1  

                          y 1

    <3>keys()

    取出字典中所有的key

    例:

    d = {'x':1,'y':1}
    res = list(d.keys())  # 将取出的字典里的所有的key转换成列表
    print(res)   # 都存放到列表里

    <4>popitem()

    随机返回并删除字典中的一对键和值。

    例:

    d = {'x':1,'y':12222}

    print(d.popitem())  # 随机返回并删除字典中的一对键和值,记住popitem()括号里不能加参数

    print(d)  # 得到删除后的字典

    (7)删除

    d.pop("x")

    d.popitem()  # 随机删除

    (8)键、值、键值对

    d.keys()

    d.values()

    d.items()

    (9)长度

    d = {'x':1,'u':2}

    print(len(d))

    (10)成员运算

    d = {'x':1,'u':2}

    print("x" in d) # 判断key是否在字典里,得到布尔值

    print(1 in d.values()) # 判断value是否在字典里,得到布尔值

    (11)补充:

    字典中如果有相同的key,则最后一个生效:

    d ={'x':1,'x':2}

    print(d)   # 输出结果为{'x':2}

     

    二、布尔值

    1、True和False

    产生布尔值:

    print(type(True))  # 可以查看布尔值是由bool的工厂函数产生的。

    之前碰到的布尔值都是通过比较运算和成员运算得到布尔值

    例:

    count = 10

    print(count > 10)  # 得到布尔类型:False ,相当于在调用bool的工厂函数:print(bool(count > 10))

    2、所有的数据类型都自带布尔值。只有0、None、空的布尔值为False,其它都是Ture

    例1:判断列表为空

    l = []

    if len(l) == 0:  # 判断列表的长度等于0,这个地方实际上是拿到了一个布尔值。

     print("列表为空")

    例2:自带布尔值的概念

    l = []

    if not l: 

    # 直接写到条件判断的后面,if判断则会调用bool()函数,把列表l传进去,得到bool(l),

    #这时的列表l相当于False,等于if not False,也就是 if True:

     print("列表为空")

    综上所述:什么叫自带布尔值?

    if 判断会自动去调bool()工厂函数,然后把数据类型传进去

    例3:写一个用户输入命令为空的情况下让其继续输入命令:

    # 例3:写一个用户输入命令为空的情况下让其继续输入命令:
    while 1:
        cmd = input("Please input your cmd:")
        if not cmd:   #   cmd本身带布尔值,如果输入为空,相当于cmd这里放了一个False
                      #  此时cmd是空,加上not,表示不为空的情况下条件才成立。
                      #  not cmd合到一块代表命令输入为空的情况下
            continue
        print("====>cmd",cmd)  # 输入回车后继续输入。
    

    三、集合

    1、定义:

    例:

    s = {"a","b",1,2,"b"}  # 实际上是在调用 s = set({"a","b",1,2,"b"})

    2、集合的特点:

    集合内的元素必须是唯一的

    集合内的元素必须是可hash的(不可变的类型)

    集合是无序的

    集合没有索引也没有key,不能单个取值

    集合是用来作关系运算的,做一个集合与另一个集合找共同部分等操作,单个元素不考虑用集合

    3、作用

    作用1:关系运算

    作用2:去重

    4、循环

    集合只能用不依赖索引的方式遍历

    例:

    s = {"a","b",1,2,"b"}

    for i in s:

     print(i)  # 遍历每个集合的元素

    5、关系运算

    例:假设一个培训机构分别开设了linux培训班和python培训班,用集合求出以下关系运算:

    linux_s = {"小白","威廉",“骑士”,“丽莎”,“布丁”,"小宋"}

    python_s = {"糖宝",“谢公子”,“布丁”,"猴哥",“鹏牛”,“小白”}

    (1)取共二者的共同部分:

    找出既报了linux班又报了python班的学生:

        print(python_s & linux_s)        # 交集

    或      print(python_s.intersection(linux_s)# 交集

    输出结果:

    {"布丁","小白"}

     

    (2)取二者的所有学生:

    取出所报了这个培训班所有的学生:

        print(python_s | linux_s)       # 并集

    或   print(python_s.union(linux_s))    # 并集

    输出结果:

    {"糖宝",“谢公子”,“布丁”,"猴哥",“鹏牛”,“小白”,"威廉",“骑士”,“丽莎”,"小宋"}

    (3)取只报了python课程的学生:

         print(python_s - linux_s)           # 差集

    或    print(python_s.difference( linux_s))       # 差集

    输出结果:

    {"糖宝",“谢公子”,"猴哥",“鹏牛”}

     

    (4)取没有同时报python课程和linux课程的学生:

         print(python_s ^ linux_s)     # 对称差集

    或    print(python_s .symmetric_difference(linux_s))     # 对称差集

    输出结果:

    {"糖宝",“谢公子”,"猴哥",“鹏牛”,“威廉”,“骑士”,"丽莎",“”}

     

    (5)其它方法操作

     参考:http://www.cnblogs.com/xiaoxiaobai/p/7615608.html

    四、补充:

    1、字符串格式化:%s

    例:

    res = "name:%s"  %"xiaobai"    # 如果是%d,就只能传数字

    2、while和else的连用

    要执行else下的语句,必须满足:1、循环结束

              2、没有被break打断  

    例1:

    count = 1
    while count < 10:
        print(count)
        break
        count += 1
    else: # 在循环正常结束后执行,
          # 条件:1、循环结束   2、没有被break打断
          # 只有符合以上两点条件,才会执行else下的语句
          # 此例因为循环体有break,所以不会执行else下的语句
        print("hahahaha")
    

    例2:

    for i in range(10):
        print(i)
        if i == 5:
            break
    else:  # 只有符合以上两点条件,才会执行else下的语句
           # 此例因为循环体有break,所以不会执行else下的语句
        print("hahahaha")
    

    3、小练习:

    要求:将以下列表在不打乱排序的情况下去重。

    l = ["xiaobai","lisa","knight","xiaobai","william"]

    l = ["xiaobai","lisa","knight","xiaobai","william"]
    l1 = []
    for i in l:         # 遍历l列表中的每个元素
        if i not in l1: # 最关键的一步:如果这个元素没有在列表l1里
            l1.append(i) # 则将遍历的元素都添加到l1列表中
    print(l1)
    

    输出结果:

    ['xiaobai', 'lisa', 'knight', 'william']
    View Code
  • 相关阅读:
    博客园精华集汇总
    SQLServer中临时表与表变量的区别分析
    【转】InstantClient安装使用
    博客人生
    【Sniffer】如何查看Sniffer截获的数据内容
    Excel使用基础
    书和耳机到了
    MindManager Pro 9.1.157更改默认字体
    xml spy中显示文件路径
    【LR】Error 27191: "web_image_check" failed 报错解决方法
  • 原文地址:https://www.cnblogs.com/xiaoxiaobai/p/7616984.html
Copyright © 2011-2022 走看看