python元组的创建 取值 排序 计数_python基础知识(三):可变字符串+列表+元组...

python基础知识(三):可变字符串+列表+元组

python基础知识(三):可变字符串+列表+元组

文章目录

一、可变字符串

二、运算符的使用

(一)算术运算符

(二)按位操作符

(三)比较运算符

(四)复合赋值运算符

(五)逻辑运算符

(六)同一运算符

(七)成员操作符

三、序列

四、列表

(一)列表的创建

1.list()函数

2.推导式生成列表

(二)列表元素的增加和删除

1.append()

2.+运算符操作

3.extend()

4.insert()

5.乘法拓展

(三)列表元素的删除

1.del

2.pop()

3.remove()

(四)列表的访问和计数

1.索引访问

2.index()访问

3.count()

4.len()

5.成员资格判断

(五)切片操作

(六)列表的遍历

(七)列表的排序

1.修改原列表

2.建立新列表

3.返回迭代器

(八)列表操作方法小结

(九)二维列表

五、元组

(一)元组的创建

1.通过()创建元组

2.通过tuple()创建元组

3.生成器推导式创建元组

(二)元组的完全删除

(三)元组的索引访问

(四)元组的切片操作

(五)元组的排序

(六)元组的连接

1.用加号+连接元组

2.zip()

(七)元组总结

在python中,字符串属于不可变对象。一般情况下,修改字符串,需要新建一个字符串对象。如果想要原地修改字符串,可以使用io.stringIO()函数。

>>>import io

>>>s="hello, sxt"

>>>sio=io.stringIO(s) #sio为可变的字符串对象

>>>sio.getvalue() #查看sio的值

'hello, sxt'

>>>sio.seek(8) #将指针移动到字符串下标索引为8的位置

8

>>>sio.write("成")#将第八个字符改为成

1

>>>sio.getvalue()

'hello.s成t'

基本规则:

乘除优先加减

算术运算符、位运算符>比较运算符>复合赋值运算符>逻辑运算符

(一)算术运算符

ca195b86677c65106229be07b424498d.png

b5958301c45ffa8030180d0cbeab2366.png

使用divmod()函数,可以同时得到商和余数

>>>divmod(13,3)

(4,1)

(二)按位操作符

依次对二进制上每一个比特位的数字进行比较:

按位或(|):至少有一个比特位上的数字为1时,结果为1,否则为0;

按位与(&):当两个比特位上的数字都为1时,结果为1,否则为0;

按位异或(^):有且只有一个比特位上的数字为1时,结果为1,否则为0;

左移(

右移(>>):右移一位(一个>)相当于除以2;两个(>>)相当于除以4;

(三)比较运算符

40a10bb878c2bec14c52f1746dfba9d8.png

注:在python中,可以连用比较运算符,如下所示:

>>>a=8

>>>3

True

(四)复合赋值运算符

fc4801cc673d49fed163e3b4cb7c4443.png

注:增强型赋值运算符之间不要加空格,如“+=”是正确的,“+ =”会报错

注:python不支持自加、自减,即a++、a–

(五)逻辑运算符

8b5fdc1ae97b576f9ab6b17c5f288f73.png

>>>a=TRUE

>>>b=30

>>>a or b

True

>>>a and b

30

(六)同一运算符

d6a7dfdc42c2c01cdbad071b3b7f403d.png

同一运算符用于比较两个对象的存储单元,实际比较的是对象的地址。

-is 和==的区别

is用于判断两个变量引用的对象是否为同一个,即地址是否相同;

= =用于判断两个变量的值是否相等,默认调用对象的_eq_()函数

a238459c7a9c13b46cb5baf56e480dc2.png

注:在命令行中,将小整数对象[-5,256]赋值给变量时,变量存储的地址是相同的。这是因为python会对小整数对象进行缓存,因此变量地址不变;对于不是小整数对象的赋值,变量储存的地址不同。

在pycharm或者保存为文件执行时,将范围是[-5,任意正整数]的整数赋值给变量,变量存储的地址不变。这是因为计时器对其做了一部分优化。

a23decb0678d0d16fedeab7d4186a9f4.png

注:is运算符比= = 效率高,因此当变量和NONE作比较时,应使用is。

(七)成员操作符

in/not in,用以判断某个字符(子字符串)是否存在于字符串中。

>>> 'aa' in 'aabbcc'

True

序列用来存储一系列数据。

eb45dce0bdbc29dfc4ef54dcfaf922e5.png

在内存中,序列是一块用来存放多个值的连续的内存空间。序列实质上存储的是每个对象的地址,然后再将整个序列的地址复制给变量a。

常用的序列结构有:字符串、列表、元组、字典和集合。

列表中可以放任意类型的数据。

(一)列表的创建

1.list()函数

将字符串中的每个字符放在列表中,如list(“hello”)==>[“h”,“e”,“l”,“l”,“o”]

使用range(起始数字,终止数字(必选),步长),能够将任何可迭代的数据转化成为列表,如list(range(10))、list(range(15,3,-1))

2.推导式生成列表

#通过range()和控制语句生成多个元素,并放到列表中

>>>a=[x*2 for x in range(5)]

>>>a

[0,2,4,6,8]

>>>b=[x*2 for x in range(50) if x%9==0]

>>>b

[0,18,36,54,72,90]

(二)列表元素的增加和删除

一般在列表尾部增加或删除元素。删除或增加列表中间的元素,将会减弱列表的操作效率。

1.append()

>>>a=[1,3,6]

>>>a.append(10)

>>>a

[1,3,6,10]

2.+运算符操作

>>>a=[1,3,6]

>>>a=a+[10]

>>>a

[1,3,6,10]

注:+和append()的不同点在于,+运算符产生的是一个新的列表。

3.extend()

>>>a=[1,3,6]

>>>a.extend([10,50])

>>>a

[1,3,6,10,50]

extend()方法可以在列表尾部插入一个指定列表。

4.insert()

>>>a=[1,3,6]

>>>a.insert(2,100) #在列表索引为2的地方插入元素100

>>>a

[1,100,3,6]

注:insert()的本质是数组的拷贝,即将元素向后移,这样会降低操作效率

5.乘法拓展

>>>a=[1,3,6]

>>>b=a*2 #将列表a复制两次

>>>b

[1,3,6,1,3,6]

(三)列表元素的删除

1.del

del用以删除指定位置上的元素

>>>a=[1,3,6]

>>>del a[2] #删除列表a中索引为2的元素

>>>a

[1,3]

注:del 的本质是数组元素的拷贝,即将后面的元素依次拷贝到前一个位置上

3025ea354edcb36ae97fcf6bc016190d.png

2.pop()

pop()默认删除列表中的最后一个元素

pop()也可以删除指定位置的元素

>>>a=[1,3,6]

>>>a.pop() #默认删除最后一个元素

>>>a

[1,3]

>>>a.pop(0) #指定删除位置

>>>a

[3]

3.remove()

remove()用来删除首次出现的指定元素,若不存在该元素,则会抛出异常。

>>>a=[1,3,6,3]

>>>a.remove(3)

>>>a

[1,6,3]

(四)列表的访问和计数

1.索引访问

通过指定位置获取元素。语法为:列表名[0,列表长度-1],如果超出范围,会报错。

2.index()访问

获得指定元素在列表中首次出现的索引位置。语法为:列表名.index(指定元素(必选),起始位置,终止位置)。如a.index(20)、a.index(20,1,6)

3.count()

>>>a=[1,3,6,3]

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

2

4.len()

>>>a=[1,3,6,3]

>>>len(a) #返回元素3在列表a中出现的次数

4

5.成员资格判断

>>>a=[1,3,6,3]

>>>20 in a #成员操作符in 、not in

False

(五)切片操作

877125631b93e1ad6ba853a709418641.png

f1ceff34cbc711859de90f8f8c07263a.png

(六)列表的遍历

>>>a=list(range(1,10,2))

>>>for x in a:

print(x)

(七)列表的排序

1.修改原列表

修改原列表,不建新列表的排序:

升序排列:a.sort()

降序排列:a.sort(reverse=True)

打乱顺序:import random

random.shuffle(a)

2.建立新列表

调用内置函数sorted()进行排序,这个方法返回新列表,不对原列表进行修改。

升序排列:sorted(列表名)

降序排列:sorted(列表名,reverse=True)

3.返回迭代器

内置函数reversed()也支持逆序排列,但只能逆序排列一次。因为逆序排列的实质是指针从后往前移动,排列完毕之后,指针转移到了列表的开头处,再进行逆序排列,指针前已无元素。

>>>a=[10,20,30,40]

>>>c=reversed(a)

>>>list(c)

[40,30,20,10]

(八)列表操作方法小结

9310b7cd87afb6285019f28c03b5b259.png

4ac03fb6a19cc33ea38a9f41c8e229ee.png

(九)二维列表

一维列表中的某元素为一维列表。

二维列表可以用来存储二维、表格的数据。

5e9649bc071279f09ba05959aec26ecf.png

二维列表的内存结构图为:

5d98dd2ab477ece51f36135c2bfd5839.png

-嵌套循环打印二维列表的所有数据

#打印上图表示的二维列表

for m in range(3):

for n in range(4):

print(a[m][n],end="\t")

print("\n")

列表属于可变序列(可以在列表里删除、修改、添加),而元组属于不可变序列,不能修改、删除、添加元组中的元素。

(一)元组的创建

1.通过()创建元组

a=(10,20,30)

a=10,20,30 #可以不要括号

a=(10,) #只有一个元素时,需要加逗号

a=10,

2.通过tuple()创建元组

tuple(可迭代的对象)

>>>a=tuple("abc")

('a','b','c')

>>>a=tuple(range(3))

(0,1,2)

>>>a=tuple(['a','b','c'])

('a','b','c')

3.生成器推导式创建元组

>>>a=(x*2 for x in range(4)) #这里的a为生成器

>>>tuple(a)

(0,2,4,6)

>>>list(a) #只能访问一次,第二次就为空了,需要再生成一次

[]

>>>a=(x*2 for x in range(4))

>>>a._next_() #指针逐个下移,迭代器依次返回数值

0

>>>a._next_()

2

>>>a._next_()

4

>>>a._next_()

6

总结:

tuple()可以接受列表、字符串、其他序列类型、迭代器等生成元组

list()可以接受元组、字符串、其他序列类型、迭代器等生成序列

(二)元组的完全删除

del a

(三)元组的索引访问

列表名称[索引值],如a[0]

(四)元组的切片操作

a[1:10]、a[::-1]、a[-5:-3]

(五)元组的排序

list.sorted(a)是修改原列表对象,元组不能修改元素。所以只能使用sorted(元组名)。

>>>a=(10,20,30)

>>>sorted(a,reverse=True)

(六)元组的连接

1.用加号+连接元组

a+b

2.zip()

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

>>>a=[10,20,30]

>>>b=[40,50,60]

>>>c=[100,90,80]

>>>d=zip(a,b,c)

>>>list(d)

[(10,40,100),(20,50,90),(30,60,80)]

(七)元组总结

核心特点:不可变序列

元组的访问和处理速度都比列表快

与整数和字符串一样,元组可以作为字典的键,列表不能。

python基础知识(三):可变字符串+列表+元组相关教程

Python基础+数据科学入门(七)

Python基础+数据科学入门(七) 声明:该博客参考深度之眼的视频课程,如有侵权请联系小编删除博文,谢谢! 若总结有所失误,还请见谅,并欢迎及时指出。 1.1 文件的读写 1.1.1 文件的打开 文件的打开通用格式 with open(文件路径, 打开模式, encoding = 操作

python 人脸识别demo

python 人脸识别demo 使用python第三方模块face_recognition实现人脸识别,并根据已命名的图片把名字显示在屏幕上。 安装模块 需要安装opencv,face_recognition,face_recognition模块需要先安装dlib,而dlib需要先安装cmake和boost 所以按顺序安装 pip insta

使用python的requests+bs4 实现京东的手机商品数据收集

使用python的requests+bs4 实现京东的手机商品数据收集 学习python有一段时间了,今天写写对京东的手机商品数据收集,权当练手,留个档 环境 win10、python3.7、pycharm 一.分析接口 在京东搜索手机这一标签,获得搜索主页面的url为 https://search.jd.com/Se

Python中编码解码过程(ASCII - Unicode - UTF-8)

Python中编码解码过程(ASCII - Unicode - UTF-8) 转载:https://finthon.com/python-encode-decode/ 在计算机科学中,所有的信息(视频、文件、音频等)都是以二进制数字形式进行存储。而编码过程可以看成将人类的语言翻译成机器的语言,将其他类型的数据翻

Python底层实现一个简易的HashMap(dict)

Python底层实现一个简易的HashMap(dict) 文章目录 前前言 前言 HashMap的作用 Hash表原理 Java中HashMap的实现原理 使用Python实现HashMap 总结: 在上一片文章中写了对比Python、Java、JavaScript中list, dict的使用,dict就是一个映射集合,在Java中有类似

Python PyQt5 设计城市天气实时查询工具

Python PyQt5 设计城市天气实时查询工具 如何使用 PyQt5 制作天气查询软件。 开发环境 Python3 PyQt5 requests 准备工作 首先要获取不同城市对应的天气代码,可以从 https://www.heweather.com/documents/city.html 网站下载 csv 文件(文末获取 csv 文件),

python 新闻摘要_每日新闻摘要周末(及以后)的故事

python 新闻摘要_每日新闻摘要:周末(及以后)的故事 python 新闻摘要 ( Apple News: Today’s the Day ) Apple is expected to announce its long-rumored streaming TV and news services at a 10:00 AM PT event today. We’ll be covering all the deta

Python爬虫教程:爬取800多所大学学校排名、星级等

Python爬虫教程:爬取800多所大学学校排名、星级等 前言 国内大学最新排名,北大反超,浙大仅第四,中科大跌至第八 时隔五年,“双一流”大学即将迎来首次大考,这也是继改变高校评断标准之后,第一次即将以官方对外发布,自然是引来了许多人的关注。最近,有

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值