今天进入训练营的第5天,今天的主要内容是:字符串、字典。

字符串字符串的定义

字符串的切片与拼接

字符串的常用内置方法

字符串格式化

字典可变类型与不可变类型

字典的定义

创建和访问字典

字典的内置方法

字符串

1.字符串的定义

字符串使用双引号或者单引号包围

常见转义字符转义字符描述

\反斜杠符号

’单引号

"双引号

\n换行

\t横向制表符(TAB)

\r回车

print("C:\\Program Files\\Intel\\Wifi\\Help")

# C:\Program Files\Intel\Wifi\Help

#原始字符串只需要在字符串前边加一个英文字母 r 即可。

print(r'C:\Program Files\Intel\Wifi\Help')

# C:\Program Files\Intel\Wifi\Help

#三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。

para_str = """这是一个多行字符串的实例

多行字符串可以使用制表符

TAB ( \t )。

也可以使用换行符 [ \n ]。

"""

print(para_str)

# 这是一个多行字符串的实例

# 多行字符串可以使用制表符

# TAB ( )。

# 也可以使用换行符 [

# ]。

2.字符串的切片与拼接类似于元组具有不可修改性

从 0 开始 (和 Java 一样)

切片通常写成 start:end 这种形式,包括「start 索引」对应的元素,不包括「end索引」对应的元素。

索引值可正可负,正索引从 0 开始,从左往右;负索引从 -1

开始,从右往左。使用负数索引时,会从最后一个元素开始计数。最后一个元素的位置编号是 -1。

[start:end:step] step 如果是负数则是逆序,如果是逆序,首先逆序之后在按步长取值

str1 = 'I Love LsgoGroup'

print(str1[:6]) # I Love

print(str1[5]) # e

print(str1[:6] + " 插入的字符串 " + str1[6:])

# I Love 插入的字符串 LsgoGroup

s = 'Python'

print(s) # Python

print(s[2:4]) # th

print(s[-5:-2]) # yth

print(s[2]) # t

print(s[-1]) # n

s2='123456789abcdef'

print(s2[::-1]) #nohtyP

print(s2[::-2]) #nhy

print('a:',s2[1:-1:1]) #23456789abcde

print('b:',s2[1:-1:2]) #2468ace

print('c:',s2[0:10:-1]) #空,好像不让这么干

3.字符串的常用内置方法

常见内置方法capitalize()

lower()

upper()

swapcase()

count(str, beg= 0,end=len(string))

endswith(suffix, beg=0, end=len(string))

startswith(substr, beg=0,end=len(string))

find(str, beg=0, end=len(string))

rfind(str, beg=0,end=len(string))

isnumeric()

ljust(width[, fillchar])

rjust(width[, fillchar])

partition(sub)

rpartition(sub)

replace(old, new [, max])

split(str="", num)

splitlines([keepends])

maketrans(intab, outtab)

translate(table, deletechars="")

format

capitalize() 将字符串的第一个字符转换为大写

lower() 转换字符串中所有大写字符为小写。

upper() 转换字符串中的小写字母为大写。

swapcase() 将字符串中大写转换为小写,小写转换为大写。

count(str, beg= 0,end=len(string)) 返回str在 string 里面出现的次数,如果beg或者end指定则返回指定范围内str出现的次数。

str2 = "DAXIExiaoxie"

print(str2.count('xi')) # 2

endswith(suffix, beg=0, end=len(string)) 检查字符串是否以指定子字符串 suffix 结束,如果是,返回 True,否则返回 False。如果 beg 和 end 指定值,则在指定范围内检查。

startswith(substr, beg=0,end=len(string)) 检查字符串是否以指定子字符串 substr 开头,如果是,返回 True,否则返回 False。如果 beg 和 end 指定值,则在指定范围内检查。

find(str, beg=0, end=len(string)) 检测 str 是否包含在字符串中,如果指定范围 beg 和 end,则检查是否包含在指定范围内,如果包含,返回开始的索引值,否则返回 -1。

rfind(str, beg=0,end=len(string)) 类似于 find() 函数,不过是从右边开始查找。

isnumeric() 如果字符串中只包含数字字符,则返回 True,否则返回 False。

str3 = '12345'

print(str3.isnumeric()) # True

str3 += 'a'

print(str3.isnumeric()) # False

**ljust(width[, fillchar])**返回一个原字符串左对齐,并使用fillchar(默认空格)填充至长度width的新字符串。

**rjust(width[, fillchar])**返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度width的新字符串。

类似oracle中的lpad,rpad

str4 = '1101'

print(str4.ljust(8, '0')) # 11010000

print(str4.rjust(8, '0')) # 00001101

partition(sub) 找到子字符串sub,把字符串分为一个三元组(pre_sub,sub,fol_sub),如果字符串中不包含sub则返回(‘原字符串’,’’,’’)。

**rpartition(sub)**类似于partition()方法,不过是从右边开始查找。

str5 = ' I Love LsgoGroup '

print(str5.strip().partition('o')) # ('I L', 'o', 've LsgoGroup')

print(str5.strip().partition('m')) # ('I Love LsgoGroup', '', '')

print(str5.strip().rpartition('o')) # ('I Love LsgoGr', 'o', 'up')

replace(old, new [, max]) 把 将字符串中的old替换成new,如果max指定,则替换不超过max次。

str5 = ' I Love LsgoGroup '

print(str5.strip().replace('I', 'We')) # We Love LsgoGroup

split(str="", num) 不带参数默认是以空格为分隔符切片字符串,如果num参数有设置,则仅分隔num个子字符串,返回切片后的子字符串拼接的列表。

u = "www.baidu.com.cn"

# 使用默认分隔符

print(u.split()) # ['www.baidu.com.cn']

# 以"."为分隔符

print((u.split('.'))) # ['www', 'baidu', 'com', 'cn']

# 分割0次

print((u.split(".", 0))) # ['www.baidu.com.cn']

# 分割一次

print((u.split(".", 1))) # ['www', 'baidu.com.cn']

# 分割两次

print(u.split(".", 2)) # ['www', 'baidu', 'com.cn']

# 分割两次,并取序列为1的项

print((u.split(".", 2)[1])) # baidu

# 分割两次,并把分割后的三个部分保存到三个变量

u1, u2, u3 = u.split(".", 2)

print(u1) # www

print(u2) # baidu

print(u3) # com.cn

去掉换行符

c = '''say

hello

baby'''

print(c)

# say

# hello

# baby

print(c.split('\n')) # ['say', 'hello', 'baby']

splitlines([keepends]) 按照行(’\r’, ‘\r\n’, \n’)分隔,返回一个包含各行作为元素的列表,如果参数keepends为 False,不包含换行符,如果为 True,则保留换行符。

str6 = 'I \n Love \n LsgoGroup'

print(str6.splitlines()) # ['I ', ' Love ', ' LsgoGroup']

print(str6.splitlines(True)) # ['I \n', ' Love \n', ' LsgoGroup']

maketrans(intab, outtab) 创建字符映射的转换表,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。

translate(table, deletechars="") 根据参数table给出的表,转换字符串的字符,要过滤掉的字符放到deletechars参数中。

str7 = 'this is string example....wow!!!'

str7 = 'this is string example....wow!!!'

intab = 'aeiou'

outtab = '12345'

trantab = str7.maketrans(intab, outtab)

print(chr(97)) #a

print(chr(49)) #1

#trantab是ascii码值得对应关系

print(trantab) # {97: 49, 111: 52, 117: 53, 101: 50, 105: 51}

print(str7.translate(trantab)) # th3s 3s str3ng 2x1mpl2....w4w!!!

4.字符串格式化

format 格式化函数

str8 = "{0} Love {1}".format('I', 'Lsgogroup') # 位置参数

print(str8) # I Love Lsgogroup

str8 = "{a} Love {b}".format(a='I', b='Lsgogroup') # 关键字参数

print(str8) # I Love Lsgogroup

str8 = "{0} Love {b}".format('I', b='Lsgogroup') # 位置参数要在关键字参数之前

print(str8) # I Love Lsgogroup

str8 = '{0:.2f}{1}'.format(27.658, 'GB') # 保留小数点后两位

print(str8) # 27.66GB

Python 字符串格式化符号

常见内置方法dict.fromkeys(seq[, value])

dict.keys()

dict.values()

dict.items()

dict.get(key, default=None)

key in dict in

dict.pop(key[,default])

dict.popitem()

dict.clear()

dict.copy()

dict.update(dict2)

print('%c' % 97) # a

print('%c %c %c' % (97, 98, 99)) # a b c

print('%d + %d = %d' % (4, 5, 9)) # 4 + 5 = 9

print("我叫 %s 今年 %d 岁!" % ('小明', 10)) # 我叫 小明 今年 10 岁!

print('%o' % 10) # 12

print('%x' % 10) # a

print('%X' % 10) # A

print('%f' % 27.658) # 27.658000

print('%e' % 27.658) # 2.765800e+01

print('%E' % 27.658) # 2.765800E+01

print('%g' % 27.658) # 27.658

text = "I am %d years old." % 22

print("I said: %s." % text) # I said: I am 22 years old..

print("I said: %r." % text) # I said: 'I am 22 years old.'

格式化操作符辅助指令

符号功能

%c格式化字符及其ASCII码

%s格式化字符串,用str()方法处理对象

%r格式化字符串,用rper()方法处理对象

%d格式化整数

%o格式化无符号八进制数

%x格式化无符号十六进制数

%X格式化无符号十六进制数(大写)

%f格式化浮点数字,可指定小数点后的精度

%e用科学计数法格式化浮点数

%E作用同%e,用科学计数法格式化浮点数

%g根据值的大小决定使用%f或%e

%G作用同%g,根据值的大小决定使用%f或%E

print('%5.1f' % 27.658) # ' 27.7'

print('%.2e' % 27.658) # 2.77e+01

print('%10d' % 10) # ' 10'

print('%-10d' % 10) # '10 '

print('%+d' % 10) # +10

print('%#o' % 10) # 0o12

print('%#x' % 108) # 0x6c

print('%010d' % 5) # 0000000005

字典

1. 可变类型与不可变类型序列是以连续的整数为索引,与此不同的是,字典以"关键字"为索引,关键字可以是任意不可变类型,通常用字符串或数值。

字典是 Python 唯一的一个映射类型,字符串、元组、列表属于序列类型。

那么如何快速判断一个数据类型 X 是不是可变类型的呢?两种方法:麻烦方法:用 id(X) 函数,对 X 进行某种操作,比较操作前后的 id,如果不一样,则 X 不可变,如果一样,则 X 可变。

便捷方法:用 hash(X),只要不报错,证明 X 可被哈希,即不可变,反过来不可被哈希,即可变。

i = 1

print(id(i)) # 140732167000896

i = i + 2

print(id(i)) # 140732167000960

l = [1, 2]

print(id(l)) # 4300825160

l.append('Python')

print(id(l)) # 4300825160整数 i 在加 1 之后的 id 和之前不一样,因此加完之后的这个 i (虽然名字没变),但不是加之前的那个 i 了,因此整数是不可变类型。

列表 l 在附加 ‘Python’ 之后的 id 和之前一样,因此列表是可变类型。

print(hash('Name')) # 7047218704141848153

print(hash((1, 2, 'Python'))) # 1704535747474881831

print(hash([1, 2, 'Python']))

# TypeError: unhashable type: 'list'

print(hash({1, 2, 3}))

# TypeError: unhashable type: 'set'数值、字符和元组 都能被哈希,因此它们是不可变类型。 列表、集合、字典不能被哈希,因此它是可变类型。

2. 字典的定义

字典 是无序的 键:值(key:value)对集合,键必须是互不相同的(在同一个字典之内)。dict 内部存放的顺序和 key 放入的顺序是没有关系的。

dict 查找和插入的速度极快,不会随着 key 的增加而增加,但是需要占用大量的内存。

字典 定义语法为 {元素1, 元素2, ..., 元素n}其中每一个元素是一个「键值对」-- 键:值 (key:value)

关键点是「大括号 {}」,「逗号 ,」和「冒号 :」

大括号 – 把所有元素绑在一起

逗号 – 将每个键值对分开

冒号 – 将键和值分开

3. 创建和访问字典

通过元组作为key来创建字典,但一般不这样使用。

dic = {(1, 2, 3): "Tom", "Age": 12, 3: [3, 5, 7]}

print(dic) # {(1, 2, 3): 'Tom', 'Age': 12, 3: [3, 5, 7]}

print(type(dic)) #

通过构造函数dict来创建字典。dict() 创建一个空的字典。

dict(mapping) new dictionary initialized from a mapping object’s (key, value) pairs

dic = dict()

dic['a'] = 1

dic['b'] = 2

dic['c'] = 3

print(dic)

# {'a': 1, 'b': 2, 'c': 3}

dic['a'] = 11

print(dic)

# {'a': 11, 'b': 2, 'c': 3}

dic['d'] = 4

print(dic)

# {'a': 11, 'b': 2, 'c': 3, 'd': 4}

dic1 = dict([('apple', 4139), ('peach', 4127), ('cherry', 4098)])

print(dic1) # {'cherry': 4098, 'apple': 4139, 'peach': 4127}

dic2 = dict((('apple', 4139), ('peach', 4127), ('cherry', 4098)))

print(dic2) # {'peach': 4127, 'cherry': 4098, 'apple': 4139}

这种情况下,键只能为字符串类型,并且创建的时候字符串不能加引号,加上就会直接报语法错误。

dic = dict(name='Tom', age=10)

print(dic) # {'name': 'Tom', 'age': 10}

print(type(dic)) #

4. 字典的内置方法

常见内置方法

dict.fromkeys(seq[, value]) 用于创建一个新字典,以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值。

seq = ('name', 'age', 'sex')

dic1 = dict.fromkeys(seq)

print(dic1)

# {'name': None, 'age': None, 'sex': None}

dic2 = dict.fromkeys(seq, 10)

print(dic2)

# {'name': 10, 'age': 10, 'sex': 10}

dic3 = dict.fromkeys(seq, ('小马', '8', '男'))

print(dic3)

# {'name': ('小马', '8', '男'), 'age': ('小马', '8', '男'), 'sex': ('小马', '8', '男')}

**dict.keys()**返回一个可迭代对象,可以使用 list() 来转换为列表,列表为字典中的所有键。

dic = {'Name': 'lsgogroup', 'Age': 7}

print(dic.keys()) # dict_keys(['Name', 'Age'])

lst = list(dic.keys()) # 转换为列表

print(lst) # ['Name', 'Age']

**dict.values()**返回一个迭代器,可以使用 list() 来转换为列表,列表为字典中的所有值。

dic = {'Sex': 'female', 'Age': 7, 'Name': 'Zara'}

print(dic.values())

# dict_values(['female', 7, 'Zara'])

print(list(dic.values()))

# [7, 'female', 'Zara']

**dict.items()**以列表返回可遍历的 (键, 值) 元组数组。

dic = {'Name': 'Lsgogroup', 'Age': 7}

print(dic.items())

# dict_items([('Name', 'Lsgogroup'), ('Age', 7)])

print(tuple(dic.items()))

# (('Name', 'Lsgogroup'), ('Age', 7))

print(list(dic.items()))

# [('Name', 'Lsgogroup'), ('Age', 7)]

dict.get(key, default=None) 返回指定键的值,如果值不在字典中返回默认值。

dic = {'Name': 'Lsgogroup', 'Age': 7}

print("Age 键的值为 : %s" % dic.setdefault('Age', None)) # Age 键的值为 : 7

print("Sex 键的值为 : %s" % dic.setdefault('Sex', None)) # Sex 键的值为 : None

print(dic)

# {'Age': 7, 'Name': 'Lsgogroup', 'Sex': None}

key in dict in 操作符用于判断键是否存在于字典中,如果键在字典 dict 里返回true,否则返回false。而not in操作符刚好相反,如果键在字典 dict 里返回false,否则返回true。

**dict.pop(key[,default])**删除字典给定键 key 所对应的值,返回值为被删除的值。key 值必须给出。若key不存在,则返回 default 值。

del dict[key] 删除字典给定键 key 所对应的值。

dic1 = {1: "a", 2: [1, 2]}

print(dic1.pop(1), dic1) # a {2: [1, 2]}

# 设置默认值,必须添加,否则报错

print(dic1.pop(3, "nokey"), dic1) # nokey {2: [1, 2]}

del dic1[2]

print(dic1) # {}

**dict.popitem()**随机返回并删除字典中的一对键和值,如果字典已经为空,却调用了此方法,就报出KeyError异常。

**dict.clear()**用于删除字典内所有元素。

**dict.copy()**返回一个字典的浅复制。

**dict.update(dict2)**把字典参数 dict2 的 key:value对 更新到字典 dict 里。

python海龟图画龙珠_DeepOps的Python小笔记-天池龙珠计划-Python训练营-Task 02:DAY5相关推荐

  1. python海龟图画龙珠_DeepOps的Python小笔记-天池龙珠计划-Python训练营-Task 02:DAY4

    进行到了训练营的第四天,进入了下一个环节Task2,Task2还是python的基础内容,主要包括:列表 元组 字符串 字典 集合 序列 DAY 4 的学习内容:列表.元组 1 列表 1.1 列表的定 ...

  2. DeepOps的Python小笔记-天池龙珠计划-Python训练营-Task 02:DAY6

    今天的任务还没出来,趁着有时间先把后面的多学一点,今天估计内容应该是:集合和序列 集合 集合的创建 访问集合中的值 集合的内置方法 集合的转换 不可变集合 序列 针对序列的内置函数 集合 Python ...

  3. 学python买什么书-Python爬虫入门看什么书好 小编教你学Python

    Python爬虫入门看什么书好 小编教你学Python 时间:2018-01-12     来源:Python爬虫入门讲解 生活在21世纪的互联网时代,各类技术的发展可谓是瞬息万变,这不今天编程界又出 ...

  4. [小笔记]TypeScript/JavaScript模拟Python中的Range函数

    [小笔记]TypeScript/JavaScript 模拟Python中的Range函数 李俊才/CSDN博客 CSDN用户名:jcLee95 邮箱:291148484@163.com 原创不易,感谢 ...

  5. Python项目:《外星人入侵》代码及笔记 via:《Python变成入门到实战》

    Python项目:<外星人入侵>代码及笔记 (via:<Python变成入门到实战>) [项目代码] alien_invasion.py import pygame from ...

  6. python海龟图画龙珠_阿里云天池龙珠计划——Python基础入门第2课:变量和赋值...

    阿里云天池龙珠计划--Python基础入门第2课:变量和赋值 [我是测试题2]下面这段代码的运行结果是什么? # 运行一下结果就出来了 a = "hello" b = " ...

  7. 小甲鱼零基础入门python教程视频_绝对干货!小甲鱼零基础入门Python视频教程全套96集,值得学习...

    原标题:绝对干货!小甲鱼零基础入门Python视频教程全套96集,值得学习 简介: 今日分享资源为:小甲鱼零基础入门免费学习Python全套教学视频,共96套. 小甲鱼教学视频生动有趣幽默,强烈推荐给 ...

  8. Python学习笔记 天池龙珠 task2

    1. 列表 <class 'list'> 推导式创建列表: x = [i ** 2 for i in range(1, 10)] print(x, type(x)) # [1, 4, 9, ...

  9. 阿里云天池龙珠计划SQL训练营Task 1:初识数据库与SQL

    本笔记为阿里云天池龙珠计划SQL训练营的学习内容,链接为:https://tianchi.aliyun.com/specials/promotion/aicampsql: 一.初识数据库 数据库是将大 ...

最新文章

  1. Python基础教程:列表的四种常用方法
  2. 用php文件创建表,使用PHP创建单个文件上传表单的最佳方式是什么?
  3. putty 配置导出
  4. Leetcode 133. 克隆图 解题思路及C++实现
  5. python tkinter计算器实例_python小实例——tkinter实战(计算器)
  6. SAP UI5 应用开发教程之五十五 - 如何将本地 SAP UI5 应用通过 Node.js Express 部署到公网上试读版
  7. 横流式冷却塔计算风量_研讨丨卓展标准高效制冷机房技术之影响冷却塔效率的几个因素...
  8. Pytorch(5)-梯度反向传播
  9. 30.Qt的内存管理
  10. php多维数组key交换,php 根据key计算多维数组的和功能实例
  11. flex皮肤制作---通过flash
  12. 字符转获取拼音首字母php实现
  13. 二、K8s Cluster详细安装步骤
  14. 编写简单的触摸屏驱动程序——基于QEMU
  15. office2019选框虚线_手把手教你分析PS2019里怎么画虚线
  16. 站桩是为了理气,气顺了,人自然就不会生病
  17. 485集线器在总线型数据采集系统的应用
  18. 使用vue-qr生成带中间带图片的二维码
  19. JS中将两个数组合并成一个数组
  20. 老都管喝道 绘图软件

热门文章

  1. python max函数时间复杂度_程序员的思考:用函数还是用复杂表达式
  2. .describe() python_Python实现ARMA模型
  3. 软件工程第一次作业-谢旭军
  4. Android 生态消息推送平台介绍
  5. 2017.0704.《计算机组成原理》-动态RAM
  6. sql 执行 delete 的时候,结合子查询 exists ,怎样支持别名呢?
  7. halcon三种模板匹配方法
  8. hdu 1255 覆盖的面积 (Bruceforce)
  9. js弹出对话框(半透明背景,兼容各浏览器)
  10. Vmware 15 安装 win7 虚拟机 (初学者操作与详解教程)