Python基础知识第三天

可变字符串
io.StringIO()

import io
string = '能重写吗'
sio = io.StringIO(string)
sio
<_io.StringIO object at 0x0000020751DFC430>
# 查看string的内容
sio.getvalue()
'能重写吗'
# 选取需修改的字符
sio.seek(3)
3
# 修改字符
sio.write('!')
1
# 再次查看
sio.getvalue()
'能重写!'

运算符:
bin() 可以将数字转为二进制
| 按位或(运算过程按二进制计算)
^ 按位异或(运算过程按二进制计算)
& 按位与(运算过程按二进制计算)
~ 按位翻转(取反,boolean取反,如果是数值,结果是-x-1)
<< 左移

a = 3
# 左移一位,相当于乘以2
a<<1
6
# 左移四位,相当于乘以2的四次方
a<<4
48

>> 右移

a = 9
# 右移两位,相当于9//4
a>>2
2
# 右移三位,相当于9//8
a>>3
1

序列:
序列结构有字符串,列表(a = [对象]),元组,字典和合集
序列是用来存放多个值的连续的内存空间,存放着对象的ID

列表:
列表可随时删减
列表可存放任何类型的元素

列表的创建:

# 基本语法[]
a = [2, 4, '任何元素,甚至是空列表']

# list方法
a = list() # 空列表
a = list('创建列表,>!@')
a
['创', '建', '列', '表', ',', '>', '!', '@']
a = list(range(9))
a
[0, 1, 2, 3, 4, 5, 6, 7, 8]

# range方法(整数列表)
range([start], end, [step]) # start和step可选,默认分别为0和1
a = range(1, 11, 2)
list(a)
[1, 3, 5, 7, 9]

a = range(17, 11, -2)
list(a)
[17, 15, 13]

# 推导式,控制语句
a = [2*x for x in range(10)]
a
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

列表元素的增加和删除:
尽量减少在列表中间增加或删减元素

# 元素的增加
# append()方法,加在列表结尾
a = [2*x for x in range(10)]
a
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
a.append(10)
a
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 10]

# 加号拼接(会产生新的ID,不建议用)
a
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 10]
b = ['a', 20, 'b']
a + b
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 10, 'a', 20, 'b']

# extend()方法(不产生新的ID)
a.extend(b)
a
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 10, 'a', 20, 'b']

# insert()方法,将指定元素插入到指定位置
a
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 10, 'a', 20, 'b']
a.insert(7, 'abc')
a
[0, 2, 4, 6, 8, 10, 12, 'abc', 14, 16, 18, 10, 'a', 20, 'b']

# 乘法扩展
a
[0, 2, 4, 6, 8, 10, 12, 'abc', 14, 16, 18, 10, 'a', 20, 'b']
a*3
[0, 2, 4, 6, 8, 10, 12, 'abc', 14, 16, 18, 10, 'a', 20, 'b', 0, 2, 4, 6, 8, 10, 12, 'abc', 14, 16, 18, 10, 'a', 20, 'b', 0, 2, 4, 6, 8, 10, 12, 'abc', 14, 16, 18, 10, 'a', 20, 'b']

# 元素的删除
# del()方法
a = [0, 2, 4, 6, 8, 10, 12, 'abc', 14, 16, 18, 10, 'a', 20, 'b']
del a[7]
a
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 10, 'a', 20, 'b']

# pop()方法,删除并返回指定位置的元素,如果没有指定位置则默认操作列表的最后一个元素
a
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 10, 'a', 20, 'b']
a[8]
16
a.pop(8)
16
a
[0, 2, 4, 6, 8, 10, 12, 14, 18, 10, 'a', 20, 'b']
a[8]
18

# remove()方法,删除首次出现的指定元素
a
[0, 2, 4, 6, 8, 10, 12, 14, 18, 10, 'a', 20, 'b']
a.remove(10)
a
[0, 2, 4, 6, 8, 12, 14, 18, 10, 'a', 20, 'b']

列表元素的访问和计数:

# index()获得指定元素在列表中首次出现的索引
a
[0, 2, 4, 6, 8, 12, 14, 18, 10, 'a', 20, 'b', 0, 2, 4, 6, 8, 12, 14, 18, 10, 'a', 20, 'b']
a.index(4)
2
a.index(4,8) # 8表示从位置为8的元素开始查询
14

# count()获得指定元素在列表中出现的次数
a.count('a')
2

# 成员资格的判断
12 in a
True
50 not in a
True

列表的排序:

# 修改原列表,不创建新列表
a = [-10, 20, 10, 79, 91]
a.sort() # 默认升序
a
[-10, 10, 20, 79, 91]
a.sort(reverse = True) # 降序
a
[91, 79, 20, 10, -10]

# 随机排序
import random
random.shuffle(a)
a
[10, -10, 79, 20, 91]

# 创建新列表,原列表不做修改
a = [-10, 20, 10, 79, 91]
id(a)
2324916859392
a = sorted(a)
a
[-10, 10, 20, 79, 91]
id(a)
2324883378304

# reversed()返回迭代器,迭代器只能用一次
a
[-10, 10, 20, 79, 91]
a = reversed(a)
a
<list_reverseiterator object at 0x0000021D4FD32E60>
>
list(a) # 第一次使用迭代器
[91, 79, 20, 10, -10]
list(a) # 第二次使用迭代器
[]

列表的最值和求和(仅限数值):

max(a) # 最大
min(a) # 最小
sum(a) # 求和

多维列表:
一维列表储存的是线性的数据:[10, 20, 30]
二维列表储存的是列表数据:[[列表1], [列表2], [列表3]]

# 一维
a = ['数学', 87, '良']
a
['数学', 87, '良']
a[1]
87
# 二维
b = [['数学', 87, '良'], ['英语', 90, '优'], ['语文', 75, '良']]
b[1]
['英语', 90, '优']
b[1][2]
'优'

元组tuple:
列表是可变序列,元组为不可变序列,不可增加删减和修改元素
元组的操作和列表相同

# 用()创建,括号可以省略
# 如果元组只有一个元素,要在元素后面加逗号,这样解释器会把元素解释为相对的type,(,)解释为元组
a = 3,
type(a)
<class 'tuple'>

# tuple()创建
a = tuple() # 空元组
a
()
c = tuple('变成元组')
c
('变', '成', '元', '组')
b = [['数学', 87, '良'], ['英语', 90, '优'], ['语文', 75, '良']]
b = tuple(b)
b
(['数学', 87, '良'], ['英语', 90, '优'], ['语文', 75, '良'])

# 生成器推导式创建元组
# 生成器生成的不是元组也不是列表,是一个生成对象,需要后续转化为列表或者元组
a = (2*x for x in range(10))
a
<generator object <genexpr> at 0x0000021D4F76F8B0>
tuple(a) # 元组
(0, 2, 4, 6, 8, 10, 12, 14, 16, 18)
list(a) # 元素只能访问一次,第二次为空值,需要重新生成
[]
a = (2*x for x in range(10))
a
<generator object <genexpr> at 0x0000021D4FD13CA0>
list(a) # 列表
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

# 删除整个元组
del b

元组的访问和计数与列表相同
元组的排序只能用sorted(),生成新的列表

zip(列表1,列表2,……)将多个列表对应位置的元素组合成元组,并返回这个zip:

# 列表的长度必须相同,否则返回空元组
a = ['数学', 87, '良']
b = [['数学', 87, '良'], ['英语', 90, '优'], ['语文', 75, '良']]
c = tuple('变元组')
d = zip(a, b, c)
list(d)
[('数学', ['数学', 87, '良'], '变'), (87, ['英语', 90, '优'], '元'), ('良', ['语文', 75, '良'], '组')]

元组的访问和处理速度比列表快
元组和数字,字符串一样,可以作为字典的键,列表不能作为键(因为整数,字符串和元组是不可变的)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值