day8

Python基础知识:元组、集合与字符串详解

一、元组

1.什么是元组

  • 元祖是容器(序列),将()作为容器的标志,里面多个元素用逗号隔开:(元素1, 元素2…)
  • 不可变的(不支持增删改);有序的(支持下标)
  • 元素要求和列表一样
  • (元组就是不可变的列表)
t1 = (10, 20)
print(type(t1))  # <class 'tuple'>

2.查

  • 列表获取元素的方法元组都支持

3.元组特有或常用的操作

1)只有一个元素的元组:必须在唯一的那个元素后加逗号

t3 = (10)
print(t3, type(t3))  # 10 <class 'int'>

t3 = (10,)
print(t3, type(t3))  (10,) <class 'tuple'>

2)在没有歧义的情况下,元祖的小括号可以直接省略(直接用多个元素用逗号隔开也是表示一个元祖)。

t1 = 10, 20, 30
print(t1, type(t1))  # (10, 20, 30) <class 'tuple'>

3)可以通过让变量的个数与元组中元素个数保持一致,来获取元祖中的每个元素(列表也可用)

point1 = (100, 200)
x, y = point1
print(x, y)   # 100 200

4)变量个数可以比值的个数少,但需要在其中一个变量前面加*,取值时先让不带星号的先取,剩下的元素以列表形式返给带星号的

point1 = (100, 200, 300, 400)
x1, *x2, x3 = point1
print(x1, x2)  # 100 [200, 300] 400

二、集合

1.什么是集合(set)

  • 集合是容器(序列),将大括号作为容器的标志,里面多个元素用逗号隔开:{元素1, 元素2, …}
  • 可变的,无序的
  • 元素的要求:不可变的;唯一的
  • 空集合:
si = set()
print(type(si))  # <class 'set'>
  • 元素不可变
s3 = {1,[2, 3]}  # 报错
  • 集合无序
print({1, 2, 3} == {3, 2, 1}  #True
  • 元素唯一
s3 = {1, 2, 3, 1, 1}
print(s3)  # {1, 2, 3}
  • 集合自带去重功能(元素不可变的情况下)
s3 = [1, 2, 3, 1, 1]
new_s3 = list(set(s3))
print(new_s3)   # [1, 2, 3]

2.数学集合运算:交集,并集,差集,对称差集(去掉公共部分),子集,真子集

1)交集(&) - 求两个集合的公共部分

s1 = {1, 2, 3, 4, 5, 6, 7}
s2 = {5, 6, 7, 8, 9}
result = s1 & s2
print(result)   # {5, 6, 7}

2)并集(|) - 合并两个集合

s1 = {1, 2, 3, 4, 5, 6, 7}
s2 = {5, 6, 7, 8, 9}
result = s1 | s2
print(result)  # {1, 2, 3, 4, 5, 6, 7, 8, 9}

3)集合1-集合2 -> 集合1中除了包含在集合2中以外的部分

s1 = {1, 2, 3, 4, 5, 6, 7}
s2 = {5, 6, 7, 8, 9}
result = s1 - s2
print(result)   # {1, 2, 3, 4}

4)对称差集(^) - 两个集合合并去掉公共部分

s1 = {1, 2, 3, 4, 5, 6, 7}
s2 = {5, 6, 7, 8, 9}
result = s1 ^ s2
print(result)

三、字符串

1.什么是字符串(str)

  • 字符串是容器(序列),将’’、""、’’’ ‘’’、“”“ ”“”作为容器的标志,在引号中的每一个符号都是字符串的元素(字符串的元素又叫字符)
  • 不可变(所以所有字符串相关的可变操作全部都是会产生一个新的字符串);有序的
  • 字符串的元素(字符):通过任何手段可以放入引号中的符号都可以是字符串的元素
  • ''和“”之间引起来的内容不能换行
  • ‘’‘ ’‘’和“”“ ”“”引起来的内容可以通过回车换行
str1 = '123'
str2 = '''1
23'''

2.字符

1)字符分为普通字符和转义字符,除了转义字符之外都是普通字符

2)转义字符 - 在一些特定的符号前加\在字符串中表示一些具有特殊功能或特殊意义的符号

  • \n - 换行
  • \t - 水平制表(相当于tab键)
  • \’ - 表示一个单引号
  • \’’ - 表示一个双引号
  • \ \ - 表示一个反斜杠
  • \u四位的十六进制编码值 - 将编码值转换对应的字符
str1 = 'abc\u4e00123'
print(str1)

3.字符在计算机中的存储问题

1)编码值

  • 计算机只能存数字,所以为了能存字符,给每个字符对应一个固定数字,每次需要保存字符的时候直接保存字符对应的那个数字
  • 一个字符对应的那个固定的数字就是这个字符的编码值

2)编码表

  • 记录字符和编码之间一一对应关系的表,常见的表:ASCII码表和Unicode编码表

  • ASCII码表:

总共有128个字符

表中,数字字符在大写字母前面,大写字母在小写字母的前面,大写字母和小写字母间有其他字符

  • Unicode编码表

    对ASCII码表的扩充,记录了世界上所有国家民族所有语言

    中文的编码范围:4e00 ~ 9fa5

3)编码值的使用

  • \u编码值(4位16进制)
  • chr(编码值) - 获取编码值对应的字符
for x in range(0x4e00,  0x9fa5):
	print(chr(x), end='')
  • ord(字符) - 获取字符对应的编码值
print(hex(ord('李')), hex(ord('航')))
  • 字符串比较大小

    比较第一对儿不相等的字符的编码值的大小。(两个字符串同位置上的字符是一对)

print('abc' > 'ABCDE')   # True
  • 字符串获取字符和列表获取元素语法一样
pw = input('请输入密码(字母和数字组成):')
for x in pw:
    if not('0' <= x <= '9' or 'A' <= x <= 'Z' or 'a' <= x <= 'z'):
        print('密码不合理')
        break
else:
    print('密码合理')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值