Python学习第二周总结

​ 第二周主要学了python中几种常见的数据结构,分别是列表、元组、字符串、集合、字典重点就是怎么创建和使用这些数据结构,操作方法更是一定要掌握的。

一、列表

1.1 定义

​ 列表是由一系元素按特定顺序构成的数据序列,这样就意味着定义一个列表类型的变量,可以保存多个数据,而且允许有重复的数据

1.2列表的创建

  • 字面量语法
list1 = ['apple', 'orange', 'pear']
print(list1)
  • 构造器语法
list2 = list(range(1, 10))
print(list2)
  • 生成式(推导式)语法
list3 = [i ** 2 for i in range(1, 10)]
print(list3)

1.3列表的相关操作

  • [:] 表示从头到尾全部取完

  • [::n] 表示从头到尾,间隔为n依次取完

  • [m:n] 表示从m到n,但是取不到n

  • [::-1] 表示从尾到头倒着依次取完

  • append 表示从最后添加元素

    items = ['banana', 'pear', 'apple']items.append('blueberry')
    items.insert(1, 'strawberry')
    print(items)
  • pop() 删除对应下标位置的元素,不输入下标时默认删除末尾元素

  • clear() 表示清空列表里的所有元素

  • remove 从列表中删除指定元素,从左到右删除第一个,可以通过循环删除全部

    items = ['banana', 'pear', 'strawberry', 'apple', 'blueberry']
    items.pop()
    items.pop(2)
    items.remove('apple')
    print(items)
  • 反转

    这是直接用切片的方法从最后往前输出,得到反转的效果

    items = ['banana', 'pear', 'apple']
    print(items[::-1])

我们也可以用reverse来达到一样的效果

items = ['banana', 'pear', 'apple']
items.reverse()
print(items)
  • 排序

    sort()对列表进行排序,字符串会按照字母表排序,默认从小到大(升序)排序,即reverse = False, 而reverse = True会按照从大到小(降序)排序。

    对于字符串类型的数字,按照首位的数字进行排序,如果相同就比较下一位。

items = ['banana', 'pear', 'apple']
items.sort()      # 默认是False升序
print(items)
nums = ['1', '10', '234', '2', '35', '100']
nums.sort(key=int)
print(nums)

需要说明的是,上面列表的里的元素是字符串,而不是数字。如果只是sort()直接排序,得到的应该是[‘1’, ‘10’, ‘100’, ‘2’, ‘234’, ‘35’]。我们用了一个key=int让它把列表里的元素当成数字来排序。

二、元组

2.1定义

元组也是多个元素按照一定的顺序构成的序列。元组和列表的不同之处在于,元组是不可变类型,这就意味着元组类型的变量一旦定义,其中的元素不能再添加或删除,而且元素的值也不能进行修改。定义元组通常使用()字面量语法,且元组类型支持的运算符跟列表是一样

一个元组中如果有两个元素,我们就称之为二元组;一个元组中如果五个元素,我们就称之为五元组。需要提醒大家注意的是,()表示空元组,但是如果元组中只有一个元素,需要加上一个逗号,否则()就不是代表元组的字面量语法,而是改变运算优先级的圆括号。下面用代码演示一下

nums = ('100',)
print(type(nums))

nums = ('100')
print(type(nums))

看,如果没有逗号,计算机认为我们输入的是字符串,而不是元组。所以不能忘记

2.2 元组的相关操作

fruits1 = ('apple', 'banana', 'grape',)
print(type(fruits1))# 重复运算
print(fruits1 * 3)# 成员运算
print('apple' in fruits1)
print('grape' not in fruits1)
fruits1 = ('apple', 'banana', 'grape',)
print(type(fruits1))# 合并运算
fruits2 = ('pitaya', 'litchi')
fruits3 = fruits1 + fruits2
print(fruits3)# 索引和切片
print(fruits3[4], fruits3[-1])
print(fruits3[1:4])
print(fruits3[1:4:2])
print(fruits3[::-1])

三、字符串

3.1 定义

所谓字符串,就是由零个或多个字符组成的有限序列,如果我们把单个或多个字符用单引号或者双引号包围起来,就可以表示一个字符串。字符串中的字符可以是特殊符号、英文字母、中文字符、日文的平假名或片假名、希腊字母、Emoji字符等。

3.2字符串的运算

Python为字符串类型提供了非常丰富的运算符,我们可以使用+运算符来实现字符串的拼接,可以使用*运算符来重复一个字符串的内容,可以使用innot in来判断一个字符串是否包含另外一个字符串,我们也可以用[][:]运算符从字符串取出某个字符或某些字符。

a = 'hello,world'# 获取字符串的长度
print(len(a))# 循环遍历字符串每个字符
for i in range(len(a)):print(a[i])for i in a:print(i)# 重复运算
print(a * 5)# 成员运算
print('or' in a)
print('ko' in a)b = 'hello,World'
# 比较运算(比较字符串的内容)
print(a == b)
print(a != b)c = 'goodbye,world'
print(b > c)d = 'hello,everybody'
print(b >= d)# 字符串的拼接
e = '!!!'
print(d + e)f = ' goodbye'
print(d + e + f)

3.3大小写相关操作

a = 'i LOVE you'# 转大写
print(a.upper())# 转小写
print(a.lower())# 首字母大写
print(a.capitalize())# 每个单词首字母大写
print(a.title())b = 'abc123'
# 判断字符串是不是数字
print(b.isdigit())# 判断是不是字母
print(b.isalpha())# 判断是不是字母和数字
print(b.isalnum())# 判断是不是ASCII码字符
print(b.isascii())c = '你好呀'
print(c.isascii())
print('-' * 5)# 判断字符串是否用指定内容开头
print(c.startswith('你好'))# 判断字符串是否用指定内容结尾
print(c.endswith('啊'))

3.4查找操作

在字符串中查找有没有某个子串的操作

~index / rindex

~find / rfind

a = 'Oh apple, i love apple.'
# index - 从左向右寻找指定的子串(substring),可以指定从哪开始找,默认是0
# 找到了返回子串对应的索引(下标),找不到直接报错(程序崩溃)
print(a.index('apple'))
print(a.index('apple', 10))
print(a.rindex('apple'))# find找到了返回子串对应的索引(下标),找不到不会报错(返回-1)
print(a.find('apple'))
print(a.find('apple', 10))
print(a.rfind('apple'))
print(a.find('banana'))
print(a.rfind('banana'))

3.5字符串的拆分和合并

content1 = 'You go your way, I will go mine'
content2 = content1.replace(',', '').replace('.', '')
words = content2.split()
print(words, len(words))
for word in words:print(word)# 用空格拆分字符串,最多允许拆分3次
words = content2.split(' ', maxsplit=3)
print(words, len(words))# 从右往左进行字符串拆分,最多允许拆分3次
words = content2.rsplit(' ', maxsplit=3)
print(words, len(words))# 用逗号拆分字符串
items = content1.split(',')
for item in items:print(item)content3 = ['请不要相信我的美丽','更不要相信我的爱情','因为在涂满油彩的面孔下','有着一颗戏子的心'
]
# 将列表中的元素用指定的字符串连接起来
print(','.join(content3))

四、集合

4.1定义

​ 集合的定义是“把一定范围的、确定的、可以区别的事物当作一个整体来看待”,集合中的各个事物通常称为集合的元素。集合应该满足以下特性:

  • 无序性:一个集合中,每个元素的地位都是相同的,元素之间是无序的。
  • 互异性:一个集合中,任何两个元素都认为是不相同的,即每个元素只能出现一次。
  • 确定性:给定一个集合,任给一个元素,该元素或者属于或者不属于该集合,二者必居其一,不允许有模棱两可的情况出现。

4.2集合的运算

set1 = {1, 2, 3, 4, 5}
set2 = {2, 4, 6, 8}
# 成员运算---确定性(元素要么在集合中,要么不在集合中)
# 集合的成员运算在效率上是远远高于列表的成员运算
print(1 in set1)
print(1 not in set1)# 交集
print(set1 & set2)# 并集
print(set1 | set2)# 差集(前有后没有)
print(set1 - set2)
print(set1.difference(set2))
print(set2 - set1)# 对称差
print(set1 ^ set2)
print((set1 | set2) - (set1 & set2))
print(set1.symmetric_difference(set2))set3 = {1, 2, 3, 4, 5, 6, 7, 8, 9}
# 判断真子集(<)
print(set1 < set3)# 判断子集(<=)
print(set2 <= set3)# 判断超集(>)
print(set3 > set2)

4.3集合的操作

set1 = {'apple', 'banana', 'pitaya', 'apple'}
# 添加元素
set1.add('grape')
print(set1)# 删除元素
set1.discard('pitaya')   # 指定删除
print(set1)
print(set1.pop())    # 随机删除
print(set1)# 清空
set1.clear()
print(set1)# 用集合给列表去重
nums = [1, 10, 1, 4, 4, 5, 6, 6, 1]
set2 = set(nums)
list1 = [set2]
print(list1)

4.5简单的总结

​ Python中的集合底层使用了哈希存储的方式,对于这一点我们暂时不做介绍,在后面的课程有需要的时候再为大家讲解集合的底层原理,现阶段大家只需要知道集合是一种容器,元素必须是hashable类型,与列表不同的地方在于集合中的元素没有序不能用索引运算不能重复

五、字典

5.1字典的创建

在Python中创建字典可以使用{}字面量语法,这一点跟上一节课讲的集合是一样的。但是字典的{}中的元素是以键值对的形式存在的,每个元素由:分隔的两个值构成,:前面是键,:后面是值,代码如下所示。

# 字面量语法
student1 = {'id': 1034,'name': 'zhou','sex': True,'birthday': 1998-5
}
print(student1)# 构造器函数
student2 = dict(id=1034, name='zhou', sex=True)
print(student2)

5.2字典的运算

student1 = {'id': 1034,'name': 'zhou','sex': True,'birthday': 1998
}
print(student1)# 遍历字典中的键
for key in student1.keys():print(key)
print('-' * 20)# 遍历字典中的值
for value in student1.values():print(value)
print('-' * 20)# 遍历字典中的键值对
for key, value in student1.items():print(key, value)student = dict(id=1034, name='zhou', sex=True, birthday=1998)
# 字典的索引运算放在赋值运算符的左边,且索引对应的键是存在的,就更新它的值
student['name'] = '小黄'
student['sex'] = False
# 字典的索引运算放在赋值运算符的左边,但字典中没有对应的索引,就增加一组新的“键值对”
student['address'] = '重庆'
print(student)print('name' in student)
print('age' in student)
print('address' in student)# 使用get函数通过key获取value时,如果key不存在,不会发生keyError错误,
# 而是得到一个None(空值)或者是你指定的默认值。
print(student.get('age'))
print(student.get('age', 20))
print(student.get('name'))# 删除键值对--->键必须存在,如果不存在会产生KeyError错误
# del student['name']
print(student.pop('name'))# 如果要使用下标(索引)运算,那么必须要保证键一定存在
if 'birthday' in student:print(student['birthday'])

5.3字典的相关操作

dict1 = {'A': 100, 'B': 200, 'C': 300}
dict2 = {'D': 400, 'E': 500, 'A': 600}# 更新(元素的合并或更新)
dict1.update(dict2)
print(dict1)# 删除
del dict1['B']
print(dict1)             # 直接删除,不会返回删除的值
print(dict1.pop('A'))    # 会把删除的元素返回
print(dict1)
dict1.popitem()   # 是删除最后一个键值对
print(dict1)# 输入一段话,统计每个英文字母出现的次数
x = input('请输入一段话:')
b = {}
for i in range(26):b[f'{chr(i + 97)}'] = x.count(f'{chr(i + 97)}')
print(b)# 方法二
import stringresults = {letter: 0 for letter in string.ascii_lowercase}
print(results)
content = input('请输入:').lower()
for ch in content:if ch in results:results[ch] += 1
for key, value in results.items():print(f'{key}: {value:>2d}次')

5.4简单的总结

Python程序中的字典跟现实生活中字典非常像,允许我们以键值对的形式保存数据,再通过键索引对应的值。这是一种非常有利于数据检索的数据类型,底层原理我们在后续的课程中再研究。再次提醒大家注意,字典中的键必须是不可变类型,字典中的值可以是任意类型。
一段话,统计每个英文字母出现的次数
x = input(‘请输入一段话:’)
b = {}
for i in range(26):
b[f’{chr(i + 97)}’] = x.count(f’{chr(i + 97)}’)
print(b)

Python学习第二周总结相关推荐

  1. 吴恩达深度学习第二周--logistic回归作业1

    吴恩达深度学习第二周–logistic回归作业1 本系列为吴恩达老师深度学习作业的总结,其中参考了很多优秀的文章,本文为了方便日后的复习与巩固,更为详细的作业讲解参考 目录 吴恩达深度学习第二周--l ...

  2. 深入理解吴恩达老师深度学习课程(01神经网络和深度学习 第二周)

    深入理解吴恩达深度学习(01神经网络和深度学习 第二周) 1引言 2.1 二分类(Binary Classification) 2.1.1 符号定义(视频给出的) 2.2 逻辑回归(Logistic ...

  3. java学习第二周周记

    JAVA学习第二周周记 **day1.**流程控制语句 ,跳转控制语句 **day2.**什么是方法?方法的重载 **day3.**数组,栈和队列 **day4.**冒泡排序及对象的引入 **day5 ...

  4. 开始Python学习第二课(python环境安装)

    *** 开始Python学习第二课*** 一. Python语言简介 1. Python语言 1.1 Python的命名 2. Python基本概念 2.1 Python的简单介绍 2.2 Pytho ...

  5. python学习第二天

    python学习第二天 输入 这篇文章我们来讲讲 python是如何进行输入的 先看一下源代码: name = input('请输入你的名字:') #在这里我们定义一个变量name 它的值就是后面in ...

  6. python学习第一周总结

    python学习第一周总结 一.Markdown语法 Markdown是一种轻量级标记语言,排版语法简洁,它使用易读易写的纯文本格式编写文档,可与HTML混编,可导出 HTML.PDF 以及本身的 . ...

  7. python编程学习——第二周

    第二周 python学习笔记和做的一些习题 (python编程快速上手--让繁琐工作自动化) 第四章节 列表 列表数据类型 "列表"是一个值,它包含多个字构成的序列. 列表中的值成 ...

  8. 01 Python学习--第一周--开课介绍、数据类型、数据运算、表达式、循环、三元运算、对象基本概念...

    模块一主要内容 开课介绍 python发展介绍 第一个python程序 变量 字符编码与二进制 字符编码的区别与介绍 用户交互程序 if else流程判断 while 循环 while 循环优化版本 ...

  9. 吴恩达深度学习第二周+二分类应用+猫图片识别

    由于最近在看吴恩达老师深度学习的课程,在第二周有一个关于猫图片识别的习题,下面将自己的一些体会和代码分享. 有关数据集的下载可以自行百度. 下载好数据集之后会发现是一个.h5的文件.所以我们首先导入 ...

最新文章

  1. Webpy 0.3新手指南
  2. python从txt拿取数据_python从txt文件读取数据
  3. sqlserver2000分页存储过程(原创)
  4. CVE-2021-33909:Linux本地权限提升漏洞
  5. bzoj1051 [HAOI2006]受欢迎的牛 tarjan缩点
  6. NSubstitute完全手册(一)入门基础
  7. 如何在Chrome中保存您当前的所有标签,以便以后阅读
  8. BP神经网络原理简介
  9. 硬盘属于计算机主机吗,电脑主机换硬盘后还是不是原来的主机?
  10. springboot线程池
  11. 百万生意难度跟十万一样,十万的也没做成
  12. Java Web应用开发实用教程_Java Web应用开发实用教程
  13. opera官方教程 预订二
  14. 绝地求生要java吗_绝地求生卡盟_【Java】几种典型的内存溢出案例,都在这儿了!...
  15. asp.net 下利用DirectoryEntry验证用户及获取域控制器下的用户结构信息
  16. 算法工程师的职业发展前景思考和总结
  17. 如何做云班课上的计算机作业,云班课不分组怎么提交作业
  18. 阿拉伯数字转大写金额(支持简体和繁体)
  19. 中国第一程序员——求伯君(二)
  20. 作为一个应届生总结最近的面试技巧

热门文章

  1. 计算机键盘操作指法要求,技巧:计算机键盘的基本指法是什么?
  2. C# Winform调用百度接口实现身份证文字识别教程完整版!!!(源码)
  3. PyTorch中的叶节点、中间节点、梯度计算等知识点总结
  4. “云时代”HCP赋能企业走向数据新蓝海
  5. zookeeper 分布式barrier
  6. java找不到的模板_java – 在当前主题中找不到样式’coordinat...
  7. python表达式_Python-计算字符串中的数学表达式
  8. 【Matlab】错误使用 classify (line 233) The pooled covariance matrix of TRAINING must be positive definite.
  9. 《网页设计与制作项目教材》-Chapter06千年之恋 -20210605
  10. (转载博客园~雨落忧伤~)iis 设置了主机名 就不能访问