分享

学习python第四课:字符串和散列类型(字典dict、集合set)

 藏墨书院 2020-07-05

(一)字符串。任何放在一对单引号或双引号中的内容都被当成字符串。

※第一课时有介绍定义字符串的三种方式,四种格式化字符串的方法,当然format格式化也可利用。

一、字符串的增删改查 

字符串也有顺序,因此可以索引取值,但不可以更改,是不可变对象。

列表、元组、字符串:序列

1.索引 值  S[index]                 S为序列名  中括号

>>> str_a = "this is python"

>>> str_a[1]  →返回 'h'  #注意索引位置放在方括号

2.字符串的查找find

与index一样返回字符串的位置,但如果没找到或超出范围不会报错,而是返回-1

可使用列表的查询位置 S.index(value)方法,但查找的对象不在范围内时会报错。 

>>> str_a.find('p')  →返回 8.  #

>>> str_a.find("p",3) →返回 8。表示从第4个位置开始查找p

>>> str_a.find("p",10) 返回 -1

>>> str_a.index('is')  →返回 2。表示从第3个字母起

>>> str_a.index("p") →返回 8。表示从第9个字母起

    在程序运行时,一旦有报错就要进行处理,否则程序不会往后运行。而find不在范围内时返回-1,不会报错,这样不会影响程序的运行,显得更人性化些。

3.查看长度 len(S)

>>> len(str_a)  →返回14。包括空格在内长度为14
4.替换replace

字符串不可修改,因此不能直接如列表那样赋值修改。

S.replace("a","b'),一次只能替换一个字符

>>> str_a[3] = "re" →返回报错信息,提示字符串不支持赋值

4-1.转换表translate

只能对单字符进行替换,但可同时替换多个字符。

5.字符串的分割split

S.split(分割符,次数)    切割之后的元素会放在一个列表当中。切割的次数,默认是-1,即不做限制

常与join连用,将列表中的字符串用*连接。想加密时可以使用这种方法

  

>>> '*'.join(str_a.split('i',2)) →返回'th*s *s python'

6.大写upper

或小写lower

>>> str_a.upper()  →返回 'THIS IS PYTHON'

>>> 'This is pyThon'.lower() →返回 'this is python'

str_a.upper().lower()这种语法是可以的,先全部变大写再变小写

7.首字母变大写capitalize()>>> str_a.capitalize()→返回'This is python'
9.字符串居中S.center(长度,补充符号)

>>> str_a.center(28,"*")  →返回 '*******this is python*******'           #表示字符串长度28并将str_a居中,以*补充。

10. count

11.字符串查找的其他一些用法,判断字符串是否满足特定的条件。

 >>> 'ab8#TH2!'.isalpha()  →返回False。判断是否全是字母

>>> '12345'.isdigit() →返回  True 。判断是否全是数字。这个运用比较多

>>> 'aBc'.islower()  →返回False。 判断字母是否全是小写

>>> "ABC".isupper() →返回  True 。判断字母是否全是大写

【查看对象的所有方法】dir

  注:字符串的其他用法(可另外参见老师提供的《字符串方法》)

二、字符串的转义:反斜杠 \   + 字母 ,  往往代表一些计算机中不太好展示出来的字符

1.  \n 换行符(转义)  如:print("python\n nice")

2.  \t  制表符(tab键)

3. \b 退格键,把后面的向前挪一个位置

4. \\ 取消转义。打印结果\       如print('c:\\nowhere') →返回c:\nowhere

5. \a 系统提示音

6.  r   不以特殊方式处理反斜杠,输出原始字符串,但原始字符串不能以单个反斜杠结尾。但有时需要输出以反斜杠结尾的字符串(如路径名等),此时可将反斜杠单独作为一个字符串,如:

print(r'c:\program files\foo\bar' "\\"→ 结果为c:\program files\foo\bar\

三、字符串的编码encode():Unicode、ASCⅡ编码、UTF-8/UTF-16

字符串中自带了encode方法,可以讲字符串编码成指定的编码  可见gbk编码更节省存储空间

也可以用decode转回去

  

(二)   字典dict

【扩展】映射mapping是一种可能过名称来访问其各个值的数据结构。字典是Python中唯一的内置映射类型,其中的值不按顺序排列,而是存在键key下。键可能是数、字符串或元组。

一、【字典的定义】由键key及其相应的值value组成,这种键-值对称为项(item)。每个键与其值间都用冒号(:)分隔,项之间用逗号分隔,而整个字典放在花括号{}内。

 如:phonebook = {"小姜": '7100', '靖宇': '3475', 'landy': '1234'}  这是常规定义方法

定义字典有如下两种方法

     

【注】字典不是序列类型,没有索引取值,也没有顺序。但在字典中,键是独一无二的,可以通过key来取值。

二、基本的字典操作——增删改查

    1.查询。字典不是序列类型,没有索引取值,也没有顺序。但在字典中,键是独一无二的, ①可以通过key来取值

      

    ②get访问方法    如果查询的键值不在字典内,则会报错。但通过get方法访问不存在的键时,则不会报错,而是返回None,也可指定返回值

    2、setdefault方法。特点:有则取,无则加。有点类似get,但get不会更新字典         

          

   3、update方法特点:有则改,无则加使用一个字典中的项来更新另一个字典。

     

   4直接添加。如:

        >>> phonebook['elle'] = 9876    可以用赋值的方式直接将键值对'elle':9876添加到字典中。

   5、提取字典的键key、值value及项目item   可用list对提取的键转换成列表      

      

  6.字典的删除pop方法,从字典中删除指定键对应的键值对。而popitem随机删除键值对 

   

【扩展】映射mapping是一种可能过名称来访问其各个值的数据结构。字典是Python中唯一的内置映射类型,其中的值不按顺序排列,而是存在键key下。键可能是数、字符串或元组。

(三) 集合

一、集合的定义:可使用序列(或其他可可迭代对象)来创建集合,放在大括号内。与字典不同的是,不是键值对形式,相同之处也是无序的,也属于hash哈希类型。且集合每一个值是唯一的(这点与字典的key一样)

建立集合set

  1、直接定义:如set_a = {1, 2, 3,  'a', 'b', 'c'}   集合中的元素是无序且唯一的

 2、空集合的定义为 set()

    区别于空列表[ ]、空元组()、空字符串“ ”、空字典{}

二、集合的作用/运算

    集合的交集&、并集|、差集-(减号)。与学校所学知识一样。  

三、集合的增删改查    集合也有增加、更新、移除等基本操作(用得不是特别多)   

  四、集合的判断  (了解即可)     

  

(四) 运算符总结

运算符优先级

​运算符

描述

**

幂运算

+-

一元运算符(正负号)

*/%

算术运算符(乘、除、取余)

+-

(加减)

<><=>=

比较运算符

==!=

等于、不等于

=%=/=-=+=、*=、**=

赋值运算符

isis not

身份运算符,判断是否是同一个对象

innot in

成员运算符

not > and > or

逻辑运算符

【小结】可变对象:列表list、字典dict、集合set

           不可变对象:数值(整数int,浮点型和布尔型)、字符串str、元组

day04 作业:

1.找出两个列表中相同元素,并打印出来 

2.统计一串字符中,每个字母 a~z的出现频率,忽略大小写 

3.利用26个字母和10个数字,随机生成10个8位密码 

4.判断用户输入的是不是一个手机号码

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约