py学习打卡第四天:序列结构(上)

由于前几天考试的事情耽误了学习的进程,同时呢也因为学习进入了比较困难得地方,所以学习周期时间增长,但是我也不会放弃,坚持学习,坚持就是胜利!

引入序列结构之前,我们先引入py里的索引:

1:计算内部序列长度的函数:len()函数,这个函数可以计算一个字符串程度,同时对于我们接下来的序列结构,虽然长得不一样,但是len都能计算出他们的长度,至于具体计算出的是什么,这要根据我们的序列结构来说;

2:序列的相加:py的加法在很多方面都可以使用,这里给大家举出一个例子:字符串相加:

a = 'absd'
b = 'asdja'
c = a + b
print(c)#print(a + b)

两种写法都可,同时,对于一些序列结构如列表,元组,集合都是支持相加操作的;

3:对序列有切片操作:结构:序列[start:end:step],意为从起始位置到结束为止每隔step个切割;当然,start为负数时,end也为负数可以逆序输出,step不写默认为零,start不写默认为0,end不写默认为尾部;

4:对序列的其他操作:x in s,判断x是都在s里,返回的是布尔值,同理有x not in s

max(x)计算x中最大的值,同理有min(x)

s.index(x),计算x第一次出现时,x的位置。s.count()计算x的总个数

5:列表:列表里可以存放不同的数据eg:lst=[10,20,'py']

列表相加意为合并,列表乘某一个数意为合并;

(1):直接使用[]创建,列表名=[元素1,元素2,...]

(2):使用内置函数,列表名=list(序列)

(3):列表的删除:del 列表名

6:列表的遍历:

(1):使用for循环遍历:


a = [10, 20, 'php', 30, 40, 20]
for i in a:
    print(i)

(2):使用索引完成遍历:

a = [10, 20, 'php', 30, 40, 20]
for i in range(len(a)):
    print(a[i])

这里的range自动识别为长度,也就是从开始到结束;

(4):使用for循环和enumerate函数:

a = [10, 20, 'php', 30, 40, 20]
for i, j in enumerate(a, 0):
    print(i,j)

这里的0可以不写,不写默认为从0开始计数,但是并不改变遍历,仍然遍历整个列表

7:列表的相关操作

新增元素:lst.append(内容)可以是各种类型,这个函数也可用在其他序列类型中

在指定位置插入:lst.insert(index,内容)index是你想要插入的位置

删除lst.remove(内容)删除remove的元素

索引删除:lst.pop(x)删除x元素

清空列表:lst.clear()

列表反向:lis.reverse

列表拷贝:生成新的列表,内容一样,但是位置不同。new_lis=lis.copy()

列表元素的修改Llst[x]=内容

8:列表的排序;

(1):sort函数:lst.sort()里面不写默认为升序,如果写:reverse=False改为降序

a = [10, 20, 50, 30, 40, 20]
a.sort()
print(a)

切记:一定得是同种类型的元素,比如不能同时有有int和字符串

如果全是字符串的话,首先按大写的,含大写字母的字符串一定在前,其次按ascii排

这里还有两个函数:如果想要不按大小排,只需要在sort里写:key=str.lower

如果想要改变升序或者降序,可以加入:reverse=False or True来改变升降序,不写默认为False升序,谁前谁后都没问题(已测试)

(2):sorted函数,会生成一个新的列表,原列表不变:

结构:列表名=sorted(列表名),支持reverse和key

9:列表生成式:

(1):a=[i for i in range(1, 10)]生成一个从1-10的列表;

(2):创建随机列表:

import random
a = [random.randint(1, 100) for _ in range(10)]
print(a)

这里range有多种用法,等会给大家细讲;

(3):加条件生成:

a = [i for i in range(1, 15) if i % 2 == 0]
print(a)

10:二维列表:只需要吧一维列表每个元素赋值一个列表即可

lst = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for row in lst:
    for j in row:
        print(j, end='\t')
    print()

使用生成式:

lst = [[j for j in range(1, 5)] for _ in range(1, 4)]#_的意思是只循环,不遍历
print(lst)

11:元组:
元组是和列表特别像,数据可以是任意类型,甚至是元组

生成元组的一个方法:tuple函数,eg:t=tuple('helloworld')他会把字符串分割,只留下字母,对于序列就把每个值拿出,range也可以;

对元组的操作:判断是否在元组:x in t

求最大值,最小值,长度:max(t),min(t),len(t)

求元素第一次出现的位置和总次数t.index(x),t.count

生成元组只有一个值时,逗号不能省:t=(a,)

删除元组del t

12:元组的遍历,可使用t[x]对下标为x的元组元素进行访问

切片:

t = (4, 6, 7)
t2 = t[0: 3: 1]
print(t2)

切记:切完之后得到的是列表,目前能进行切片的不输出都以列表形式出现;

组合遍历也支持

t = (4, 6, 7)
for i in range(len(t)):
    print(t[i])

enunerate也可以,这里就不写了

13:元组的生成式:

结构:直接看代码吧

t = (i for i in range(1,10))
print(t)
t = tuple(t)
print(t)

这里注意,使用()生成的是元组,使用[]生成的是列表,以后使用{}生成的是集合

元组生成的第一个t叫做生成器对象,这时候你是看不到里面的东西的,我们可以使用tuple函数转成列表即可输出

当然,可以使用for循环直接对生成器对象遍历

t = (i for i in range(1,10))
for i in t:
    print(i)

元组支持的其他操作:比如我们可以使用加法直接把两个元组合并,这里,元组合并后并不会去重,这点注意;

我们来给大家看一下切片和range的三种写法,这里我们只写range,切片同理

结构:range[start,end,step]这里的,换成:就是切片了

当只有一个数字,默认是end,两个数字默认是start和end

stap不写默认是1,start不写默认是开始,end不写默认是最后

这一章其实通过我们的观察,我们可以发现c与c++和py比起来,py真的是太方便了,相对于py来说,c与c++严谨密切,我所知目前想range这样不屑默认的函数只有c++的sort排序里的cmp,如此一比,py真的是要比c++好很多

由于本人目前在学c++指针往后和py,所以可能更新较慢,望谅解,明天更新c++部分

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值