字符串和数据结构

计算机发展至今,已经不再是纯粹的运算了,再多的是数据的存储,数据当然有很多种,数字,图片,文件,视频等等,而Python也必须能够操作这样的信息,不然也就没有什么意义了,今天,我们就了解下字符串和它的一些内容。

(((((((桌子太小就换了个小键盘,感觉有点不熟悉)))))))

字符串,其中就是多个字符所组成的。在Python中,我们用单引号或双引号来表示一个字符串。比如:

"""关于字符串Version: 0.1Author: 大饼油条"""s1 = '大家好,'s2 = "我是"# 还可以以下这样哦s3 = """大饼,油条!"""print(s1, s2, s3, end='')

还有一些特别的操作:

\(反斜杠)来表示转义,也就是说\后面的字符不再是它原来的意义。比如

\n:代表反斜杠和字符n,而是表示换行

\t:也不是代表反斜杠和字符t,而是表示制表符

所以如果想在字符串中表示:',要写成:\',同理想表示:\,就要写成:\\

s1 = '\'你好!\''s2 = '\n\\大家好!\\\n'print(s1, s2, end='')#这个代码大家自己去运行吧。

\的后面还可以用进制或Unicode字符编码(ASCII)来表示字符,比如:

s1 = '\141\142\143\x61\x62\x63'#\141是八进制表示法,\x61是十六进制表示法s2 = '\u5927\u5c4f\u6cb9\u6761'print(s1, s2)

当然,在有些时候,我们并不希望在输出过程中把\后的的字符给转义掉,这时候,我们可以用r来说明,比如:

"""关于字符串Version: 0.1Author: 大饼油条"""s1 = r'\'你好!\''s2 = r'\n\\大家好!\\\n'print(s1, s2, end='')

在Python中,字符串的运算比数字运算有趣的多,下面,我整理了一下字符串运算的运算符,一起来了解下:

+:实现字符串的拼接

*:重复字符串内容

in 或not in:判断字符串中是否包含条件中的字符串内容

[]或[:]:取出某些特定的字符内容

看下例子

"""关于字符串运算Version: 0.1Author: 大饼油条"""s1 = '你好! ' * 3print(s1) # 输出三个你好!s2 = '大饼油条's1 += s2print(s1) # 你好!你好!你好!大饼油条print('你' in s1) # True,判断“你”,是否在s1字符串中,下同print('我' in s1) # Falsestr2 = 'abc123456'# 从字符串中取出指定位置的字符(下标运算)print(str2[2]) # c 取第二个字符(从0开始)print(str2[2:5]) # c12 取第二个开始的,第五个结束,注意取的范围print(str2[2:]) # c123456 取第二个开始的到最后print(str2[2::2]) # c246 取第二个开始的偶数个print(str2[::2]) # ac246 取第二个开始的偶数个print(str2[::-1]) # 654321cba 取反print(str2[-3:-1]) # 45 取-3开始到-1个

我们还可以用很多的方法来对字符串操作:比如

"""关于字符串运算Version: 0.1Author: 大饼油条"""str1 = 'hello, world!'# 通过内置函数len计算字符串的长度print(len(str1)) # 13# 获得字符串首字母大写的拷贝print(str1.capitalize()) # Hello, world!# 获得字符串每个单词首字母大写的拷贝print(str1.title()) # Hello, World!# 获得字符串变大写后的拷贝print(str1.upper()) # HELLO, WORLD!# 从字符串中查找子串所在位置print(str1.find('or')) # 8print(str1.find('shit')) # -1# 与find类似但找不到子串时会引发异常# print(str1.index('or'))# print(str1.index('shit'))# 检查字符串是否以指定的字符串开头print(str1.startswith('He')) # Falseprint(str1.startswith('hel')) # True# 检查字符串是否以指定的字符串结尾print(str1.endswith('!')) # True# 将字符串以指定的宽度居中并在两侧填充指定的字符print(str1.center(50, '*'))# 将字符串以指定的宽度靠右放置左侧填充指定的字符print(str1.rjust(50, ' '))str2 = 'abc123456'# 检查字符串是否由数字构成print(str2.isdigit()) # False# 检查字符串是否以字母构成print(str2.isalpha()) # False# 检查字符串是否以数字和字母构成print(str2.isalnum()) # Truestr3 = ' 5416268@qq.com 'print(str3)# 获得字符串修剪左右两侧空格之后的拷贝print(str3.strip())

在没学过字符串运算时,我们可以用下面这样的方法来输出字符串:

a, b = 5, 10print('%d * %d = %d' % (a, b, a * b))

了解了字符串运算,我们就可以写成:

a, b = 5, 10print('{0} * {1} = {2}'.format(a, b, a * b))

Python 3.6之后的版本中,就更更更更方法了,只要在字符串前加上字母f,就可以随便输出了,小学生都会了。

a, b = 5, 10print(f'{a} * {b} = {a * b}')

列表的使用

关于列表,如果你接触过别的语言,肯定不会陌生,我们知道字符串是有属性和方法的,而列表(list)同样也是,列表中的每一个值都是可以被标识的,定义列表可以把元素放在[]中,多个元素可以用,进行分割。使用for循环对列表内的元素进行查看,当然,也可以用我们刚刚学的字符串运算中的[]或[:]进行取值。来些例子,可能你就能明白了。

"""关于字符串运算Version: 0.1Author: 大饼油条"""list1 = [1, 3, 5, 7, 100]print(list1) # [1, 3, 5, 7, 100]# 乘号表示列表元素的重复list2 = ['hello'] * 3print(list2) # ['hello', 'hello', 'hello']# 计算列表长度(元素个数)print(len(list1)) # 5# 下标(索引)运算print(list1[0]) # 1print(list1[4]) # 100print(list1[-1]) # 100print(list1[-3]) # 5list1[2] = 300print(list1) # [1, 3, 300, 7, 100]# 通过循环用下标遍历列表元素for index in range(len(list1)):print(list1[index])# 通过for循环遍历列表元素for elem in list1:print(elem)# 通过enumerate函数处理列表之后再遍历可以同时获得元素索引和值for index, elem in enumerate(list1):print(index, elem)

以上,只是查看列表中的内容,这样远远不够,我们还要添加、删除里面的内容。例如:

"""关于列表运算Version: 0.1Author: 大饼油条"""list1 = [1, 3, 5, 7, 100]# 添加元素list1.append(200)# 在最后加个值为200的元素list1.insert(1, 400)#在第1个元素后面加个值为400的元素# 合并两个列表# list1.extend([1000, 2000])list1 += [1000, 2000]print(list1) # [1, 400, 3, 5, 7, 100, 200, 1000, 2000]print(len(list1)) # 9# 先通过成员运算判断元素是否在列表中,如果存在就删除该元素if 3 in list1:list1.remove(3)if 1234 in list1:list1.remove(1234)print(list1) # [1, 400, 5, 7, 100, 200, 1000, 2000]# 从指定的位置删除元素list1.pop(0)list1.pop(len(list1) - 1)print(list1) # [400, 5, 7, 100, 200, 1000]# 清空列表元素list1.clear()print(list1) # []

再来几个有用的例子。我就不放代码了,自己可以去练习下,下面是我的运算结果。

1、取出一部分的元素,来做新的列表内容。

2、列表的排序

用一些方法来创建列表

我们可以用一些特别的方法来生成列表,在术语中好像有对这种方法的描述,但我想了十分钟,确实想不出叫什么来着。

比如用循环:

"""关于列表运算Version: 0.1Author: 大饼油条"""f = [x for x in range(1, 10)]print(f)f = [x + y for x in 'ABCDE' for y in '1234567']print(f)f = [x ** 2 for x in range(1, 1000)]print(sys.getsizeof(f)) # 查看对象占用内存的字节数print(f)f = (x ** 2 for x in range(1, 1000))print(sys.getsizeof(f))print(f)for val in f:print(val)

除了上面的方法,我们还可以用yield关键字,把普通函数作为创建列表的函数,当然,我从来没有这么做过。你或许有用。

"""关于列表运算Version: 0.1Author: 大饼油条"""def fib(n):a, b = 0, 1for _ in range(n):a, b = b, a + byield adef main():for val in fib(20):print(val)if __name__ == '__main__':main()

不知道为什么,我并不喜欢这样的方法。个人喜欢吧。

元组的使用

元组其实和列表差不多,只不过列表的元素是可以有多个可变的,而元组是固定不能变的。其实的都一样,包括可以存放多条数据。而元组的定义和使用也是很方便的。

"""关于列表运算Version: 0.1Author: 大饼油条"""# 定义元组t = ('大饼', 34, True, '浙江绍兴')print(t)# 获取元组中的元素print(t[0])print(t[3])# 遍历元组中的值for member in t:print(member)# 重新给元组赋值# t[0] = '油条' # TypeError# 变量t重新引用了新的元组原来的元组将被垃圾回收t = ('油条', 31, True, '浙江绍兴')print(t)# 将元组转换成列表person = list(t)print(person)# 列表是可以修改它的元素的person[0] = '小美女'person[1] = 25print(person)# 将列表转换成元组fruits_list = ['apple', 'banana', 'orange']fruits_tuple = tuple(fruits_list)print(fruits_tuple)

有小伙伴肯定会想了,有了列表,为什么要用元组呢?

这里我不想展开,元组和列表的区别在百度上有很多说明,我只想偷偷告诉你,其实我还是比较喜欢用元组。不是因为他创建的时候或占用的空间优势,而是更喜欢他的元素不变的限制。

集合的使用

数学中有集合的运算,Python肯定也不会放过。当然同样不允许有重复元素,可以交集、并集和差集等。

1、创建和使用集合。

# 创建集合的字面量语法set1 = {1, 2, 3, 3, 3, 2}print(set1)print('Length =', len(set1))# 创建集合的构造器语法(面向对象部分会进行详细讲解)set2 = set(range(1, 10))set3 = set((1, 2, 3, 3, 2, 1))print(set2, set3)# 创建集合的推导式语法(推导式也可以用于推导集合)set4 = {num for num in range(1, 100) if num % 3 == 0 or num % 5 == 0}print(set4)

2、在集合中添加元素和删除元素。

set1.add(4)set1.add(5)set2.update([11, 12])set2.discard(5)if 4 in set2:set2.remove(4)print(set1, set2)print(set3.pop())print(set3)

3、交集、并集、差集等运算。

# 集合的交集、并集、差集、对称差运算print(set1 & set2)# print(set1.intersection(set2))print(set1 | set2)# print(set1.union(set2))print(set1 - set2)# print(set1.difference(set2))print(set1 ^ set2)# print(set1.symmetric_difference(set2))# 判断子集和超集print(set2 <= set1)# print(set2.issubset(set1))print(set3 <= set1)# print(set3.issubset(set1))print(set1 >= set2)# print(set1.issuperset(set2))print(set1 >= set3)# print(set1.issuperset(set3))

字典的使用

字典的意思就是被敲定了的,写在一个地方了,每一个无素有键和值组成,用:分开。

"""关于列表运算Version: 0.1Author: 大饼油条"""# 创建字典的字面量语法scores = {'大饼': 95, '油条': 78, '小美女': 82}print(scores)# 创建字典的构造器语法items1 = dict(one=1, two=2, three=3, four=4)# 通过zip函数将两个序列压成字典items2 = dict(zip(['a', 'b', 'c'], '123'))# 创建字典的推导式语法items3 = {num: num ** 2 for num in range(1, 10)}print(items1, items2, items3)# 通过键可以获取字典中对应的值print(scores['大饼'])print(scores['小美女'])# 对字典中所有键值对进行遍历for key in scores:print(f'{key}: {scores[key]}')# 更新字典中的元素scores['油条'] = 65scores['小吊丝'] = 71scores.update(老太太=67, 老爷爷=85)print(scores)if '小帅哥' in scores:print(scores['小帅哥'])print(scores.get('小帅哥'))# get方法也是通过键获取对应的值但是可以设置默认值print(scores.get('小帅哥', 60))# 删除字典中的元素print(scores.popitem())print(scores.popitem())print(scores.pop('大饼', 100))# 清空字典scores.clear()print(scores)

7天学会python_Python学习:第七天相关推荐

  1. php七天登录,十天学会php之第七天

    十天学会php之第七天推荐查看本文HTML版本 学习目的:学会SESSION的使用 SESSION的作用很多,最多用的就是站点内页面间变量传递.在页面开始我们要session_start(); ...

  2. 学会如何学习,是一项终极生存技能

    10年前,根本没有人能够想象今天会有主播.微电影策划.私人旅行策划师.收纳师这些工作. 微软公司曾经推出了一个报告,其中提到:三分之二在校生未来从事的工作,现在还没有出现. 现在大家都在讨论人工智能抢 ...

  3. python字典、列表、元祖使用场景_python学习第七讲,python中的数据类型,列表,元祖,字典,之元祖使用与介绍...

    python学习第七讲,python中的数据类型,列表,元祖,字典,之元祖使用与介绍 一丶元祖 1.元祖简介 元祖跟列表类似.只不过是有区别的. 如下: tuple(元祖英文) 跟列表类似, 元素不能 ...

  4. Maven学习总结(七)——eclipse中使用Maven创建Web项目

    2019独角兽企业重金招聘Python工程师标准>>> Maven学习总结(七)--eclipse中使用Maven创建Web项目 一.创建Web项目 1.1 选择建立Maven Pr ...

  5. 学习Kotlin(七)反射和注解

    推荐阅读: 学习Kotlin(一)为什么使用Kotlin 学习Kotlin(二)基本语法 学习Kotlin(三)类和接口 学习Kotlin(四)对象与泛型 学习Kotlin(五)函数与Lambda表达 ...

  6. 从零开始学习jQuery (七) jQuery动画-让页面动起来!

    本系列文章导航 从零开始学习jQuery (一) 开天辟地入门篇 从零开始学习jQuery (二) 万能的选择器 从零开始学习jQuery (三) 管理jQuery包装集 从零开始学习jQuery ( ...

  7. 【直播】今晚(7月1日)京东直播,如何学会深度学习模型设计和优化

    各位同学,上周日(6.28)原计划在京东进行的直播,因为平台技术问题失败了,再次表示非常抱歉,本周三(7.1)晚上8点(20:00)我们将再次进行直播,同时会给大家增加抽奖环节以补偿大家的精神损失,并 ...

  8. Typescript 学习笔记七:泛型

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  9. Java IO流学习总结七:Commons IO 2.5-FileUtils

    Java IO流学习总结七:Commons IO 2.5-FileUtils 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/5497 ...

最新文章

  1. 参加java培训都有哪些学习阶段
  2. spring整合mybatis(入门级简单教程3)--获取sqlSession对象
  3. 只需两行代码,2080Ti 就能当 V100用,这个炼丹神器真牛!
  4. NSPredicate的使用
  5. 治标更治本,如何从根源防护DDoS***
  6. oracle的除,Oracle数据库如何去除别名 - daiyan0526的个人空间 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
  7. C/C++头文件与变量的声明和定义
  8. 由旋转矩阵计算欧拉角的方法
  9. 防止页面高度不足,引起的底部上浮问题
  10. python2线程池_python 线程池调用类方法不执行?
  11. 公约数和公倍数(Python)
  12. python的数组下标_python数组下标
  13. 狂神说SpringCloud学习笔记
  14. Vivado工程配置petalinux实现linux下网卡驱动
  15. Linux系统如何替换新硬盘
  16. Idea的类注释和方法注释
  17. Python基本环境配置
  18. 记录一次租房经历一(1)
  19. XSS讲解上(web安全入门10)
  20. FDC2214/2114使用说明及资料分享

热门文章

  1. 【Python】一句话 if else 简洁写法
  2. android高仿微信视频编辑页-视频多张图片提取
  3. pandas去掉html标签,用Pandas清理HTML表
  4. JAVA中自增自减运算符(i++与++i的区别)
  5. 限制只允许某个进程调用库
  6. 浏览器获取CA认证流程
  7. Mac串口工具picocom
  8. shell逻辑判断和-a区别
  9. C++普通类继承模版类demo
  10. python之zip