Python入门(三)序列

'''
序列 称为 数列。一块用于存放多个值的连续内存空间。
常用的5个序列结构:列表,元组,集合,字典和字符串
'''

#索引
'''
in.正数索引:从0开始,从左到右
2.负数索引:从-1开始,从右到左
'''

#切片
'''
1.访问序列内一定内范围元素,生成一个新的序列
2.sname[start : end : step]
  start 默认为0
  end 默认为序列长度
  step 默认为1
  默认值可以省略,但是中间的冒号:不能省略
'''

#序列相加
'''
1.实现两个相同类型的序列(序列中元素类型可以不同)进行连接,不去掉重复元素
2.列表和元组不能相加
3.列表和字符串不能相加
'''

#序列乘法
'''
1.数字n乘以一个序列会生成新的序列,新序列内容是原序列重复n次
2.利用序列乘法实现,初始化指定长度列表功能
'''
emptylist = [None] * 5
print(emptylist)  # [None, None, None, None, None]

#检查某个元素是否是序列的成员
number_list = [1, 2, 3, 4, 5]
print(1 in number_list) #True
print(6 in number_list) #False

#序列的内置函数


import random

#字典
'''
in.无序的可变序列,以键值对的形式存放。
2.键唯一,如存在多个重复键,值为最后一次出现键对应的值
3.键不可变,所以数字,字符串或元组可作为键,列表不行
4.字典支持任意深度的嵌套
'''

#字典的创建和删除
'''
inp.支持直接创建字典
'''
dictionary = {'qq' : 123456789, "明日科技" : "地址:大新路89号", 3 : "123"}
#创建空字典
dictionary1 = {}
dictionary2 = dict()

#遍历字典
'''
使用字典对象items()方法可以获取字典的(键-值对)元组列表
'''
for items in dictionary.items():
    print(items, end = " ")
print("\n")

for keys, values in dictionary.items():  #分别获取键和值
    print(keys, "的值为:", values)

#字典推导式
randomdict = {i : random.randint(10, 100) for i in range(1, 5)}
print(randomdict)

'''
dict()函数:还可以通过已有数据快速创建字典
zip()函数:用于将多个列表或元组对应位置的元素组合为元组,返回组合后的zip对象
'''
list1 = [1, 2, 3 ,4]
list2 = [1, 2, 3]
dis = zip(list1, list2)
print(type(dis))
print(dis)

number = (i for i in range(3))
print(number)
print(type(number))

print(dictionary.popitem())  #删除并返回最后一个键值对元素
print(dictionary)

#通过键值对访问字典
print(dictionary["qq"])
print(dictionary["123"] if "123" in dictionary else "字典中不存在键值")
print(dictionary.get("qq"))
print(dictionary.get("123", "字典中不存在键值")) #设置默认值,避免抛出异常

dictionary.clear() #清空字典元素,空字典
del dictionary #删除字典


'''
汉字在GBK/GB2312编码中占2个字节,在UTF8/unicode编码中一般占3个字节(或4个字节)
在Python中汉字默认UTF-8编码,一般占据3个字节
'''
#len(string) 获取字符串长度。所有字符都按一个字符计算
str1 = "人生苦短,我用python。"
print(len(str1)) # 14

#获取字符串实际的所占字节数,使用encode()先进行编码再获取
print(len(str1.encode())) #30

#切片方式截取字符串  string[start : end : step]
'''
start默认为0,end默认是最后一个字符,step默认为1
字符串中字符索引默认从0开始,并且每个字符占一个位置
'''
try:
    substr1 = str1[:5]
    print(substr1)
except IndexError:
    print("指定索引不存在")

# 分割  # 合并
'''
分割:把字符串分割为列表
合并:把列表合并为字符串

分割 str.split(seq, maxsplit)
seq 默认为Node,表示所有的空字符(空格,\n,\t等)
maxsplit 分割次数,默认为-1
'''
str2 = "明 日 学 院 官 网  >>  >   www.mingrisoft.com"
print(str2.split())  #['明', '日', '学', '院', '官', '网', '>>>', 'www.mingrisoft.com']
print(str2.split(">>>")) #['明 日 学 院 官 网  ', '   www.mingrisoft.com']
print(str2.split(" ", 4)) #['明', '日', '学', '院', '官 网  >>>   www.mingrisoft.com']

#指定分割符号后,两个分割符中间如果没有内容则产生空元素
print(str2.split(">")) #['明 日 学 院 官 网  ', '', '  ', '   www.mingrisoft.com']

'''
合并
strnew = string.join(iterable)
'''
list_str = ['小明', 'xiaohua', 'xiaozhang', 'xiaoxie']
str_ = '@'.join(list_str)
print(str_)


#检索字符串
'''
1.str.count(substr[, start[, end]]) 返回出现次数,否则为0
2.str.find(substr[, start[, end]]) 找到子串第一次出现的位置,否则为-1
  用in关键字也可以判断字符串中是否存在子串,返回True或False
3.str.index(substr[, start[, end]]) 与find()相同,当子串不存在时,抛出异常
4.startswith()  endswith()  返回True或False
'''

#大小写转换
'''
str.lower()  str.upper()
'''

#去掉左或右或左右特殊字符(可指定)
'''
str.strip([char])
str.lstrip([char])
str.rstrip([char])
'''

#格式化字符串
'''
先制定模板,预留空位(占位符),再填充相应内容

1.新字符串 = 模板字符串%内容 
2.新字符串 = 模板字符串.format(内容)
'''
template = ('编号:%05d\t公司名称:%s')
context = (9, "百度百科")
print(template%context)

#字符串编码
'''
最早的字符串编码是美国的ASCII码。

我国定义的字符串编码是GBK,GB2312,一个字节表示英文字符,两个字节表示中文字符

国际通用的字符编码是UTF-8,一个字节表示英文,三个字节表示中文字符

在python中,有两种字符串类型,分别是str和bytes。
str在内存中以unicode表示,一个字符对应若干个字节,但是如果在网络上传输,或者保存到磁盘
需要把str转成字节类型,即bytes类型

'''
# encode() 编码  decode() 解码
verse = '野渡无人舟自横'
byte1 = verse.encode('GBK')
byte2 = verse.encode('UTF-8') #默认为utf-8
print('utf-8:', byte2)
print('GBK:', byte1)











#列表
'''
in.元素按照特定循序排列组成de可变序列
2.任何类型元素都可以存放在列表中
3.一个列表中可以有多种类型的元素
'''

#list()
'''
将序列转换为列表
'''

#列表的创建和删除
'''
listname = [elementin, element2, element3, ...]

创建空列表
listname = []

创建数值列表
list(range(ae0, 20, 2)) 创建10~20之间的偶数列表

删除列表  关键字
del listname
'''

#访问列表元素
stuname = ['小明', "小红", '小花']
print(stuname) #打印全部数组元素  ['小明', '小红', '小花']
for name in stuname:
    print(name, end = ",")  #小明,小红,小花,
'''
使用for循环和enumerate()函数可以实现同时输出索引值和元素内容
'''
for index, item in enumerate(stuname):
    print(index + 1, item)

#添加,修改和删除列表元素
'''
1.在列表的末尾追加元素 append(); 也可以通过+符号将两个序列连接
2.将一个列表全部元素添加到另一个列表中 extend()
'''
stuname.append("小亮")
print(stuname)
'''
1.删除元素,根据索引删除
2.删除元素,根据元素值删除
'''
del stuname[-1]
stuname.remove("小花")

#对列表统计和计算
'''
1.获取指定元素出现的次数 列表对象的方法 count(obj)
2.获取指定元素首次出现的下标 列表对象的方法 index(obj)
3.统计数值列表的元素和 sum(list)
'''

#对列表进行排序
'''
1.使用列表对象的方法sort(key, reverse)
  例如 key=str.lower 表示排序的时候不区分大小写
  reverse 默认为升序 False

2.使用内置函数sorted() 会创新生成一个新的列表,不改变原列表排列顺序
'''



#二维列表
'''
二维列表的定义
1.直接定义二维列表
2.嵌套for循环创建
3.使用列表推导式创建
'''
arr = [[j for j in range(5)] for i in range(4)]
print(arr)
# [[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]
arr0 = [[4, 3, 2, 1, 0], [0, 3, 2, 1, 4], [4, 1, 2, 3, 0], [0, 3, 2, 1, 4]]
arr0.reverse()
print(arr0)
# [[0, 3, 2, 1, 4], [4, 1, 2, 3, 0], [0, 3, 2, 1, 4], [4, 3, 2, 1, 0]]
'''
1.元素按照特定循序排列组成de不可变序列
2.任何类型元素都可以存放在元组中
3.一个元组中可以有多种类型的元素

元组所有元素均放在()中,且用逗号分隔;但是()也不是必须的
'''
#与列表的区别:
#元组是不可变序列,列表是可变序列
#元组的元素不可以单独修改,而列表则可以任意修改

#创建一个元素的元组
verse1 = ("一片冰心在玉壶",)
#创建一个字符串
verse2 = ("一片冰心在玉壶")
print(type(verse1)) #<class 'tuple'>
print(type(verse2)) #<class 'str'>

'''
访问元组元素
1.输出整个元组的数据 print(tuple)
2.数组索引,输出指定索引的元组元素
3.访问元组前3个元素 tuplename[:3]
'''

'''
修改元组元素
1.对元组进行重新赋值
2.对元组与元组使用+进行重新连接
3.访问元组前3个元素 tuplename[:3]
'''

'''
元组推导式
与列表推导式类似,但是元组推导式最后生成的不是元组,
而是一个生成器对象,需要使用转换函数tuple()转换为元组,或者使用list()转换为列表
'''
#集合:可变集合是无序可变序列(set集合)

#集合的创建
set1 = {"水瓶座", "射手座", "双鱼座", "双子座"} #直接创建
set2 = {3, 1, 4, 8, 4, 9, 10}
set3 = {"python", 28}

'''
set() 可将其他可迭代的对象转换为集合,例如:列表,元组,字符串,range对象等。
  如果是字符串,则返回的集合将是包含全部不重复字符的集合
'''

set4 = set() #创建一个空集合

#集合的添加和删除
set1.add(10)
print(set1)  #因为集合是无序的,所以每次输出的集合元素的排列顺序可能不一样

set1.remove(10) #删除指定元素
print(set1)

set1.pop()
print(set1) #删除一个元素(无序排列的第一个)

#集合的交集,并集和差集运算

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值