Python学习第二周总结

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 string

results = {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)

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值