zoukankan      html  css  js  c++  java
  • 解读基本数据类型和内置方法(2)

    一、元组

    1.定义:t = ()  print(t,type(t))

    1.1# 参数为for可以循环的对象(可迭代对象):

    1 t2 = tuple("123")
    2 print(t2, type(t2))
    3 t3 = tuple([1, 2, 3])
    4 print(t3, type(t3))
    5 t4 = tuple((7, 8, 9))
    6 print(t4, type(t4))
    案例

    思考:如何利用元组定义一个只有一个值的元组

    1 print(('Egon,'))
    2 print(tuple(['Egon']))
    View Code

    常用的操作:

    1.2元组的索引取值和有序存储:

    1 t = (1,5,8,9,6,6,3,1)
    2 print(t[5])  # 6
    3 print(t[-7]) # 5
    4 print(t[3]) # 9 
    代码如下

    1.3元组的切片、长度和内置方法

     1 # 切片
     2 t = (1,4,7,8,6,3)
     3 res = t[0:3]
     4 print(res) #[1,4,7]
     5 
     6 #长度
     7 print(len(t)) # 6
     8 
     9 #内置方法
    10 print(t.count(3)) #1
    代码如下

    1.4.元组的案列:#提前拥有一个老师列表,打算开除,如果是校长的亲友团,免开。

     1 teas = ['Egon','Alex']
     2 
     3 friends = input('亲友团[0,1]:')
     4 
     5 if friends == '1':
     6     teas = tuple(tesa)
     7 if not isinstance (teas , tuple): # 判断老师是不是亲友团,不是就删除
     8     teas.clear()
     9 for t in teas:
    10     print('在职老师:%s' %t)
    代码如下

    二、字典

    1.字典的定义和声明: ***在Python中,字典是仅存的mapping类型***

    dict里面的key:他是可以为所有的不可变的类型。如:str tuple int float bool None,停航情况下采用字符串。

    dict里面的value:可以为所有的数据类型的。

    注意:在字典中,key是具有唯一性的,(新值会覆盖旧值);而value可以进行重复定义的。例如:

    1 dic = {1: None, None: None, 3.14: None,
    2           True: None, 'abc': None, (1,): None,
    3            None: 12345
    4          }
    5 print(dic)
    案例

    定义字典的三种方式:

     1 # 1
     2 d1 = {'name': 'Owen', 'age': 18}
     3 print(d1)
     4 
     5 # 2
     6 d2 = dict({'name': 'Owen', 'age': 18})
     7 print(d2)
     8 # 3
     9 
    10 d3 = dict(name='Egon', age=58)
    11 print(d3)
    定义的三种方式

    总结:字典是无序的存储方式,无索引和切片的操作,通过key进行取值。

    2.字典的增删改查操作

     1 # 定义一个空字典
     2 dic = {}
     3 
     4 # 增:key不存在
     5 dic['name'] = 'Mac'
     6 print(dic)
     7 
     8 # 改:key已存在
     9 dic['name'] = 'Big Mac'
    10 print(dic)
    11 
    12 # 查:
    13 print(dic['name'])
    14 
    15 # 删:
    16 del dic['name']
    17 print(dic)
    代码如下

    3.Get取值

    1 dic = {'a': 10, 'b': 20}
    2 # print(dic['c'])  # KeyError
    3 res = dic.get('c')  # 拥有默认值,None,可以避免错误
    4 print(res)
    5 res = dic.get('d', 'key不存在')  # 可以自定义默认值
    6 print(res)
    代码如下

    4.如何定义一个空字典

    1 # 第一个参数:keys:list|tuple|str,第二个参数:统一的默认value
    2 d10 = {}.fromkeys(['a', 'b', 'c'], '')
    3 print(d10)  # {'a': '', 'b': '', 'c': ''}
    代码如下

    5.字典的案例:# 添加老师,在原teas基础上添加老师,如果没有,新建一个空teas。

     1 # 方法一
     2  if 'teas' not in d11:  # 成员运算
     3      d11['teas'] = []
     4  d11['teas'].append('Egon')
     5  d11['teas'].append('LiuXX')
     6  print(d11)
     7 
     8 
     9 #方法二
    10 # 原d11中,如果有teas这个key,setdefault相当于什么都没干
    11 # 如果没有,就将第二个参数(默认值)传给teas存放到d11中
    12 d11.setdefault('teas', [])
    13 d11['teas'].append('Egon')
    14 d11['teas'].append('LiuXX')
    15 print(d11)
    代码如下

    6.字典的循环与案例:# 不区分大小写,计算每一个名字出现的次数,记录在字典中。

     1 ls = ['Owen', 'owen', 'Egon', 'LiuXX', 'Liuxx', 'egon', 'egon']
     2 # {'owen': 2, 'egon': 3 ...}
     3 name_dic = {}
     4 for name in ls:
     5     # 名字全小写,不用区分大小写
     6     name = name.lower()
     7     # 名字是否在字典中存在:存在 - 次数+1 | 不存在 - 添加并设置初值1
     8     if name not in name_dic:
     9         # 不存在
    10         name_dic[name] = 1
    11     else:
    12         # 存在
    13         name_dic[name] += 1
    14 print(name_dic)
    案例方法一
    1 ls = ['Owen', 'owen', 'Egon', 'LiuXX', 'Liuxx', 'egon', 'egon']
    2 name_dic = {}
    3 for name in ls:
    4     name = name.lower()
    5     # name已存在,不管,不存在,初始化指定key:name值为1
    6     name_dic.setdefault(name, 0)
    7     name_dic[name] += 1
    8 print(name_dic)
    案例方法二

    三、集合

    什么是set?它具备哪些特点?

      i) 单列数据集合:str,list,tuple,set 双列:dict

      ii) 无序存储:无key无index,无法取值

      iii) 可变数据类型,内部可以存放任意类型数据,但数据具有唯一性 *****

    1.{}代表空字典,用set()来创建空集合。

    1 s1 = set()
    2 print(s1, type(s1))
    3 s2 = set('abc')
    4 print(s2, type(s2))
    代码如下

    2.内置方法与集合之间的运算

     1 p_set = {'a', 'b', 'c', 'egon'}
     2 l_set = {'x', 'y', 'z', 'egon'}
     3 # print(p_set)
     4 # print(l_set)
     5 
     6 # 交集 &
     7 res = p_set & l_set
     8 print(res)
     9 res = p_set.intersection(l_set)
    10 print(res)  # {'egon'}
    11 
    12 # 并集
    13 res = p_set | l_set
    14 print(res)
    15 res = p_set.union(l_set)
    16 print(res)  # {'z', 'c', 'y', 'x', 'b', 'a', 'egon'}
    17 
    18 # 差集
    19 res = p_set - l_set
    20 print(res)  # {'a', 'b', 'c'}
    21 res = l_set.difference(p_set)
    22 print(res)  # {'x', 'z', 'y'}
    23 
    24 # 对称差集
    25 res = p_set ^ l_set
    26 print(res)
    27 res = p_set.symmetric_difference(l_set)
    28 print(res)  # {'y', 'a', 'b', 'x', 'z', 'c'}
    29 
    30 print(p_set)
    31 print(l_set)
    32 # p_set.difference_update(l_set)  # 将运算结果赋值给调用者
    33 p_set = p_set - l_set
    34 print(p_set)  # {'c', 'a', 'b'}
    35 print(l_set)  # {'egon', 'z', 'y', 'x'}
    36 
    37 
    38 # 添加删除操作
    39 s = set()
    40 s.add('abc')
    41 s.add('xyz')
    42 print(s)
    43 res = s.pop()  # 随机删除一个ele元素
    44 print(res)
    45 if 'xyz' in s:
    46     s.remove('xyz')  # 有ele删除,无ele抛异常
    代码如下

    3.案例:#  1.多少人参加了选课: ['owen', 'egon', 'liuxx'] 2.都选了哪些课程: ['python', 'linux', 'java'] 3.利用逻辑代码去重

     1 names = []
     2 for name, _ in class_map:
     3     # 判断列表中是否已存在,不存在才添加
     4     if name not in names:
     5         names.append(name)
     6 print(names)
     7 
     8 # 利用set去重
     9 classes = set()
    10 for _, cless in class_map:
    11     classes.add(cless)
    12 classes = list(classes)
    13 print(classes)
    代码如下

    4.了解:

     1 sup_set = {1, 2, 3, 4, 5}
     2 sub_set = {1, 2, 3}
     3 temp_set = {3, 2, 1}
     4 flag_set = {7, 8, 9}
     5 
     6 print(sup_set > sub_set)
     7 print(sup_set < sub_set)
     8 print(temp_set == sub_set)
     9 
    10 # 两个set是否没有交集
    11 res = flag_set.isdisjoint(temp_set)
    12 print(res)
    13 res = temp_set.isdisjoint(sup_set)
    14 print(res)
    代码如下
  • 相关阅读:
    《C#多线程编程实战》2.7 CountDownEvent
    《C#多线程编程实战》2.6 ManualResetEventSlim
    《C#多线程编程实战》2.5 AutoResetEvent
    《C#多线程编程实战》2.4 SemaphoreSlim
    ConcurrentDictionary与Dictionary 替换
    vs2017 代码格式化 文档排版 编辑 设置文档的格式
    面试笔记
    way.js
    SQL Server 2008 技巧快捷键
    CentOS下Docker与.netcore(四)之 三剑客之一Docker-machine+jenkins简单自动化部署
  • 原文地址:https://www.cnblogs.com/wanglei957/p/10595037.html
Copyright © 2011-2022 走看看