第三天学习笔记

可变字符串:io模块

import io

s='hello,world'

sio=io.StringIO(s)

sio.seek(6)#定位到sio字符串的第六个位置

sio.write('q')#改变索引6所在字符的字母

sio.getvalue()#得到sio的值

如果不用getvalue()用print会得到sio的id

序列:列表

列表的创建:1、a=[]  2、a=list(range(10))

range(start,end,step):创建整数列表,开始值和步长值可省略,默认从0开始步长为1

推导式生成列表:a=(x*2 for x in range(4))→b=list(a)此时a为迭代器,仅可以使用一次或             a=[x*2 for x in range(4) if x%2==0]#通过if进行元素的过滤,顺序:if(过滤)→for(循环)→x*2

 a=[20,30,40,20,30]#列表属于可变序列,可对列表进行增删改查的操作

a.append(50)#在列表a的结尾处增加元素50,此方法不会新增对象,在原列表修改

+运算符操作:a+[50],在a末尾加入元素50,此方法会新增对象,新增一个列表

a.extend([20,30])#在列表a的结尾处增加列表[20,30]中的元素进去,此方法不会新增对象,在原列表修改

a.insert(2,50)#在列表a的索引2处增加元素50,使用insert()方法可以将指定的元素插入到列表对象的任意制定位置。这样会让插入位置后面所有的元素进行移动,会影响处理速度

a.remove(20)#删除列表a中的元素20限定第一次出现的,元素进行移动

a.pop(1)#删除列表a中索引1对应的元素并返回该元素的值,如果括号中没有数值,则默认删除列表a的最后一个元素,元素进行移动

乘法扩展:a*3 将列表中的元素重复3次→[20,30,40,20,30,20,30,40,20,30,20,30,40,20,30]

del a[1]:删除列表a中索引位置为1的元素

a.clear()#删除列表a中所有的元素

a.index(20,1,9)#返回元素20在列表a中对应的索引值,从索引位置1 到9 这个区间,第一次出现30 元素的位置

a.count(20)#返回列表a中元素20出现的次数

len(a)#返回列表a的长度,即所含元素个数

a.reverse()#将列表a中的元素翻转

a.sort()#对列表a中的元素从小到大进行排序,括号中加入参数reverse=True则对元素进行降序排列

a.copy()#对列表进行浅拷贝

import random

random.shuffle(a)#对列表a中的元素随机排列

我们也可以通过内置函数sorted()进行排序,这个方法返回新列表,不对原列表做修改。                 m=sorted(a),reverse=True依然可以加入此参数进行降序排列

切片操作:

 内置函数reversed()也支持进行逆序排列,与列表对象reverse()方法不同的是,内置函数
reversed()不对原列表做任何修改,只是返回一个逆序排列的迭代器对象。

reversed(a)

b=reversed(a)

list(b)

多维列表

 二维列表可以储存表格的数据

[

['高小一',18,30000,'北京'],

['高小二',20,20000,'上海'],

['高小五',23,10000,'深圳']

]

将二维列表中的所有元素进行打印:

for m in range(3):

    for n in range(4):

        print(a[m][n],end='\t')#使其每个列表中的元素打印后不换行

    print()#打印完一行后换行

元组的创建:

1、a=touple()  2、a=(),a=(20,)#用此方法创建单个元素的元组需注意,20后面必须加“,”否则会被认为是整数20

2、b = tuple("abc")
b = tuple(range(3))
b = tuple([2,3,4])

1. 元组的元素不能修改

2. 元组的元素访问和列表一样,只不过返回的仍然是元组对象。

3. 列表关于排序的方法list.sorted()是修改原列表对象,元组没有该方法。如果要对元组排
序,只能使用内置函数sorted(tupleObj),并生成新的列表对象。

zip(列表1,列表2,...)将多个列表对应位置的元素组合成为元组,并返回这个zip 对象。
>>> a = [10,20,30]
>>> b = [40,50,60]
>>> c = [70,80,90]
>>> d = zip(a,b,c)
>>> list(d)
[(10, 40, 70), (20, 50, 80), (30, 60, 90)]

从形式上看,生成器推导式与列表推导式类似,只是生成器推导式使用小括号。列表推
导式直接生成列表对象,生成器推导式生成的不是列表也不是元组,而是一个生成器对象。
我们可以通过生成器对象,转化成列表或者元组。也可以使用生成器对象的__next__()
方法进行遍历,或者直接作为迭代器对象来使用。不管什么方式使用,元素访问结束后,如
果需要重新访问其中的元素,必须重新创建该生成器对象。

>>> s = (x*2 for x in range(5))
>>> s
<generator object <genexpr> at 0x0000000002BDEB48>
>>> tuple(s)
(0, 2, 4, 6, 8)
>>> list(s) #只能访问一次元素。第二次就为空了。需要再生成一次
[]
>>> s
<generator object <genexpr> at 0x0000000002BDEB48>
>>> tuple(s)
()
>>> s = (x*2 for x in range(5))
>>> s.__next__()
0
>>> s.__next__()
2
>>> s.__next__()
4

1. 元组的核心特点是:不可变序列。
2. 元组的访问和处理速度比列表快。
3. 与整数和字符串一样,元组可以作为字典的键,列表则永远不能作为字典的键使用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值