2

Python学习-基础篇(二)

 2 years ago
source link: https://qwzf.github.io/2020/01/18/Python%E5%AD%A6%E4%B9%A0-%E5%9F%BA%E7%A1%80%E7%AF%87(%E4%BA%8C)/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

本篇包含:序列的应用(列表、元组、字典、集合)

四、序列的应用

序列是一块用于存放多个值的连续内存空间,并且按一定顺序排列,可以通过索引取值。
1.索引
索引->编号->下标
从0开始计数
索引可以是负数(从-1开始)

元素1 元素2 元素3 元素4
0      1     2    3
-4    -3    -2   -1
python复制代码
>>> string = "一言既出,驷马难追。"
>>> print(string[1])
言
>>> print(string[-2])
追
py python复制代码

2.切片(分片)

sname[start : end : step]
#sname:列表名称
#start:起始值(包括)
#end:结束值(不包括)
#step:步长
py python复制代码
>>> student = ["小明","赵四","小赵","李明","张张","李华","王强"]
>>> print(student[1:5])
['赵四', '小赵', '李明', '张张']
>>> print(student[0:5:2])
['小明', '小赵', '张张']
>>> print(student[5]) #只有end并省略:就变成了索引
李华
>>> print(student[:5])
['小明', '赵四', '小赵', '李明', '张张']
>>> print(student[:])
['小明', '赵四', '小赵', '李明', '张张', '李华', '王强']
>>> print(student[5:])
['李华', '王强']
py python复制代码

3.序列相加
序列1+序列2=序列1 序列2
只能是同类型的序列相加,如:列表+列表、元组+元组、字符串+字符串

>>> stu1 = ["小明","赵四","小赵","李明"]
>>> stu2 = ["张张","李华","王强"]
>>> stu = stu1+stu2
>>> print(stu)
['小明', '赵四', '小赵', '李明', '张张', '李华', '王强']
py python复制代码

4.乘法
序列*乘数=重复n次的序列

>>> number = [1,2,3]
>>> print(number*3)
[1, 2, 3, 1, 2, 3, 1, 2, 3]
>>> emptylist = [None]*5 #初始化列表长度
>>> print(emptylist)
[None, None, None, None, None]
py python复制代码

5.检查某个元素是否是序列的成员

value in sequence
#value:要检查的元素
#sequence:序列
py python复制代码
>>> content = [1,2,3,4,"小明","李华"]
>>> print(2 in content)
True
>>> print("小明" in content)
True
>>> print(6 in content)
False
>>> print("小王" not in content)
True
py python复制代码

6.计算序列的长度、最大值和最小值
计算序列的长度:len()
计算序列的最大值:max()
计算序列的最小值:min()
将序列转换为列表:list()
将序列转换为字符串:str()
计算列表之中元素和:sum
对元素进行排序:sorted()
反转序列元素:reversed()
把序列组合为索引序列:enumerate()

>>> number = [25,6,32,88,22]
>>> print(len(number))
5
>>> print(max(number))
88
>>> print(min(number))
6
>>> string = "我学Python"
>>> print(len(string))
8
py python复制代码

1、列表(list)

[元素1,元素2,...,元素n]
py python复制代码

列表是可变序列,列表可以放入:整数、实数、布尔值、字符串、序列、对象
1.列表的创建和删除
创建列表
(1)使用赋值运算符直接创建列表

listname = [元素1,元素2,...,元素n]
py python复制代码

(2)创建空列表

listname = []
py python复制代码

(3)创建数值列表

listname = [数值1,数值2,...,数值n]
py python复制代码
#跳一跳
>>> list(range(2,21,2))
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
py python复制代码

删除列表

del listname
py python复制代码

Python自带垃圾回收机制会自动销毁不用的列表,所以即使我们不手动将其删除,Python也会自动将其回收。
2.访问列表元素
访问列表元素,即获取列表的内容。有三种方法:
(1)直接使用print()函数输出
(2)索引
(3)切片
3.遍历列表
(1)直接使用for循环

for item in listname:
    #输出item
py python复制代码

(2)使用for循环和enumerate()函数
enumerate()函数获取索引值,也就是下标

for index,item in enumerate(listname):
    #输出index和item
py python复制代码
print("成绩排名:")
student = ["小明","赵四","小赵","李明","张张","李华","王强"]
for index,item in enumerate(student):
    print(index+1,item)
py python复制代码
在这里插入图片描述
在这里插入图片描述
4.添加、修改和删除列表元素
添加元素
(1)追加元素:append()insert()
列表1.append(新元素)=列表1中的元素,新元素
py python复制代码

列表对象提供了insert()方法向列表的指定位置插入元素

列表1.insert(索引值,新元素)
py python复制代码

insert()方法没有append()方法执行效率高

student = ["小明","赵四","小赵","李明"]
student.append("我是append添加的")
print(student)
student.insert(1,"我是insert添加的")
print(student)
py python复制代码
在这里插入图片描述
在这里插入图片描述
(2)添加列表:extend()
一个列表的全部元素添加到另一个列表中
listname.extend(seq)
py python复制代码
oldlist = ["小明","赵四","小赵","李明"]
newlist = ["张飞","李华"]
oldlist.extend(newlist)
print(oldlist)
py python复制代码
在这里插入图片描述
在这里插入图片描述
修改元素
list = ["长亭外","古道边","一行白鹭上青天"]
list[2] = "芳草碧莲天"
print(list)
py python复制代码
在这里插入图片描述
在这里插入图片描述
删除元素
(1)根据索引删除:del
list = ["长亭外","古道边","一行白鹭上青天"]
print("删除前:",list)
del list[2]
print("删除后:",list)
py python复制代码
在这里插入图片描述
在这里插入图片描述
(2)根据元素值删除:remove()
list = ["长亭外","古道边","一行白鹭上青天"]
print("删除前:",list)
list.remove("一行白鹭上青天")
print("删除后:",list)
py python复制代码
在这里插入图片描述
在这里插入图片描述
5.对列表进行统计计算
获取指定元素出现的次数:count()
获取指定元素首次出现的索引值(下标):index()
统计数值列表各元素的和:sum()
listname.count(obj)
listname.index(obj)
sum(iterable[,start]) #将统计结果加上start所指定的数,没有默认0
py python复制代码
>>> grade = [89,86,69,59,92]
>>> print(sum(grade))
395
>>> print(sum(grade,5))
400
py python复制代码

6.对列表进行排序
(1)使用列表对象的sort()方法
使用sort()方法实现排序后,原列表中的元素顺序改变

listname.sort(key=None,reverse=False)
#key=str.lower排序不区分大小写
#reverse=False按升序排序
python复制代码
grade = [89,86,69,59,92,85]
print("原列表",grade)
grade.sort() #进行升序排序
print("升序:",grade)

animal = ["cat","Dog","panda","Tiger"]
print("原动物列表",animal)
animal.sort()
print("升序:",animal)
py python复制代码
在这里插入图片描述
在这里插入图片描述
(2)使用内置的sorted()函数
使用sorted()函数实现排序后原列表的元素顺序不变
sorted(iterable,key=None,reverse=False)
py python复制代码

7.列表推导式
列表推导式可以快速生成一个列表,或者根据某个列表生成满足指定需求的列表。

list = [Expression for var in range]
py python复制代码

生成随机数的模块:random模块

#生成一个长度为10的随机数列表
#通过循环实现
import random #导入生成随机数的模块
list1 = [] #定义一个空列表
for i in range(10):
    list1.append(random.randint(20,100))
print(list1)
#通过列表推导式实现
import random #导入生成随机数的模块
list2 = [random.randint(20,100) for i in range(10)]
print(list2)
py python复制代码

根据列表生成指定需求的列表

newlist = [Expression for var in list]
py python复制代码
price = [1000,800,600,750,900]
sale = [int(i*0.5) for i in price]
print("原价:",price)
print("打折后:",sale)
py python复制代码
在这里插入图片描述
在这里插入图片描述
从列表中选择符合条件的元素组成新的列表
newlist = [Expression for var in list if condition]
py python复制代码
price = [1000,800,600,750,900]
sale = [i for i in price if i>800]
print("原价:",price)
print("大于800元的:",sale)
py python复制代码

8.二维列表的使用
列表类似于一维数组;二维列表类似于二维数组

listname = [[元素1,...,元素n],...,[元素1,...,元素n]]
py python复制代码

2、元组(tuple)

和列表类似,把[]换成()。且不能对单个元素像列表那样直接修改。

(元素1,元素2,...,元素n)
py python复制代码

列表是不可变序列,元组可以放入:整数、实数、布尔值、字符串、序列、对象
1.元组的创建和删除
创建元组
(1)使用赋值运算符直接创建元组

tuplename = (元素1,元素2,...,元素n)
py python复制代码
>>> verse1 = ("我学Pyhon")
>>> print(verse1,type(verse1))
我学Pyhon <class 'str'>
>>> verse2 = ("我学Pyhon",)
>>> print(verse2,type(verse2))
('我学Pyhon',) <class 'tuple'>
py python复制代码

(2)创建空元组

tuplename = ()
py python复制代码

(3)创建数值元组

tuplename = (数值1,数值2,...,数值n)
py python复制代码
#跳一跳
>>> tuple(range(2,21,2))
(2, 4, 6, 8, 10, 12, 14, 16, 18, 20)
py python复制代码

删除元组

del tuplename
py python复制代码

2.访问元组元素
和列表类似。
3.修改元组元素
不能对单个元素像列表那样利用索引值直接修改。

coffeename = ('蓝山','卡布奇诺','摩卡','麝香猫')
print("我是原来的",coffeename)
coffeename = ('蓝山','卡布奇诺','摩卡','拿铁')
print("我是修改后的",coffeename)
newcoffeename = ('麝香猫',)
allcoffeename = coffeename + newcoffeename
print("我是添加后的",allcoffeename)
py python复制代码
在这里插入图片描述
在这里插入图片描述
4.元组推导式
快速生成元组。类似于列表推导式
tuple = (Expression for var in range)
py python复制代码
import random #导入生成随机数的模块
tuple1 = (random.randint(20,100) for i in range(10))
print(tuple1)
py python复制代码

得到生成器对象

在这里插入图片描述
在这里插入图片描述
import random #导入生成随机数的模块
tuple1 = (random.randint(20,100) for i in range(10))
print(tuple(tuple1)) #使用tuple()函数进行转换
py python复制代码

使用tuple()函数进行转换,得到元组

在这里插入图片描述
在这里插入图片描述
输出元组元素的值
#通过for循环
import random #导入生成随机数的模块
tuple1 = (random.randint(20,100) for i in range(10))
for i in tuple1:
    print(i,end=' ')

#通过__next__()方法
import random #导入生成随机数的模块
tuple1 = (random.randint(20,100) for i in range(10))
#print(tuple1.__next__()) #输出第1个元素
#print(tuple1.__next__()) #输出第2个元素
#......
for j in range(10):
    print(tuple1.__next__(),end=' ')
py python复制代码
在这里插入图片描述
在这里插入图片描述
对生成器对象访问之后,生成器对象就不存在了。若还想使用生成器对象,需要重新生成
import random #导入生成随机数的模块
tuple1 = (random.randint(20,100) for i in range(10))
print(tuple(tuple1))
#通过for循环
for i in tuple1:
    print(i,end=' ')
py python复制代码
在这里插入图片描述
在这里插入图片描述
5.元组与列表的区别
相同点:
(1)都属于序列。
(2)都可以按照一定的顺序存放一组元素,且元素类型不受限制。

不同点:
(1)列表属于可变序列(随时添加、修改或删除);元组属于不可变序列(不能添加、修改和删除元素,可以整体替换)。
(2)都支持切片操作。列表可以访问、修改元组中的元素;元组只能访问元组中的元素。
(3)列表访问速度慢;元组访问速度快。
(4)列表不能作为字典的键;元组可以作为字典的键。

3、字典(dictionary)

键->下标
字典是可变序列

dictionary = {'key1':'value1','key2':'value2',...,'keyn':'valuen'}
py python复制代码

key必须唯一,value可以不唯一。
1.字典的创建和删除
创建字典
(1)创建字典的四种方式
方式一:

>>> dictionary = {'che':'车','chen':'陈','chi':'吃','cheng':'称'}
>>> print(dictionary)
{'che': '车', 'chen': '陈', 'chi': '吃', 'cheng': '称'}
py python复制代码
>>> dictionary = dict(che = '车',chen = '陈',chi = '吃',cheng = '称')
>>> print(dictionary)
{'che': '车', 'chen': '陈', 'chi': '吃', 'cheng': '称'}
py python复制代码
key = ['che','chen','chi','cheng'] #音节索引列表
value = ['车','陈','吃','称'] #汉字列表
zip1 = zip(key,value) #转换为zip对象
#zip()函数可以把两个列表对应位置的元素组合为一个元组,并且返回一个zip对象
print(zip1)
word = dict(zip1) #转换为字典
print(word)
py python复制代码
在这里插入图片描述
在这里插入图片描述
方式四:
key = ('che','chen','chi','cheng') #音节索引元组
#key = ['che','chen','chi','cheng'] 错误,列表不能作为字典的键
value = ['车','陈','吃','称'] #汉字列表
dictionary = {key:value}
print(dictionary)
py python复制代码
在这里插入图片描述
在这里插入图片描述
(2)创建空字典
>>> word1 = {}
>>> print(word1)
{}
>>> word2 = dict()
>>> print(word2)
{}
py python复制代码

(3)使用dict的fromkeys()方法,创建值为空的字典

key = ['che','chen','chi','cheng']
dictionary = dict.fromkeys(key)
print(dictionary)
py python复制代码
在这里插入图片描述
在这里插入图片描述
删除字典
#删除字典
del dictionary
#清除字典中的所有元素
dictionary.clear()
py python复制代码

2.通过键值对访问字典
(1)dict[键]

key = ['che','chen','chi','cheng'] #音节索引列表
value = ['车','陈','吃','称'] #汉字列表
dictionary = dict(zip(key,value)) #转换字典
print(dictionary['che'] if 'chei' in dictionary else '字典里没有这个字!')
py python复制代码
在这里插入图片描述
在这里插入图片描述
(2)get()方法
dictionary.get(key,[default])
py python复制代码
key = ['che','chen','chi','cheng'] #音节索引列表
value = ['车','陈','吃','称'] #汉字列表
dictionary = dict(zip(key,value)) #转换字典
print(dictionary.get('che','查无此字'))
#指定的键不存在时,不会抛出异常,返回None(指定默认值则返回默认值)
py python复制代码
在这里插入图片描述
在这里插入图片描述
3.遍历字典
dictionary = {'che':'车','chen':'陈','chi':'吃','cheng':'称'}
#输出可遍历的元组列表
print(dictionary.items())
#items()方法,返回可遍历的元组列表,每个元组即是键和值
print("\n")
#通过for循环,输出每个元组
for item in dictionary.items():
    print(item)
print("\n")
#通过for循环,输出键和值
for key,value in dictionary.items():
    print(key,"的汉字是",value)
print("\n")
#输出键
for key in dictionary.keys():
    print(key)
print("\n")
#输出值
for value in dictionary.values():
    print(value)
python复制代码
在这里插入图片描述
在这里插入图片描述
4.添加、修改和删除字典元素
添加字典元素
dictionary[key] = value
python复制代码

修改字典元素

dictionary[key] = value
python复制代码

删除字典元素

del dictionary[key]
python复制代码
dictionary = {'che':'车','chen':'陈','chi':'吃','cheng':'称'}
print("原字典:",dictionary)
dictionary["wang"] = "王" #添加元素
print("添加后:",dictionary)
dictionary["wang"] = "网" #修改元素
print("修改后:",dictionary)
del dictionary["wang"] #删除元素
print("删除后:",dictionary)
python复制代码
在这里插入图片描述
在这里插入图片描述
5.字典推导式
与列表推导式类似
{键值表达式:值表达式 for循环}
python复制代码
import random #导入生成随机数的模块
randomdict = {i:random.randint(20,100) for i in range(10)}
print(randomdict)
python复制代码
在这里插入图片描述
在这里插入图片描述

4、集合(set)

可变集合set;不可变集合frozenset。
用于保存不重复元素,最好的应用是去重
不支持索引
集合是可变序列

set = {元素1,元素2,...,元素n}
python复制代码

1.集合的创建
(1)使用赋值运算符直接创建集合

setname = {元素1,元素2,...,元素n}
py python复制代码
>>> python = {"小明","赵四","小赵","李明","张张","李华","王强"} #选择pyhon学生名字集合
>>> print(python,type(python))
{'小明', '李华', '李明', '小赵', '王强', '赵四', '张张'} <class 'set'>
py python复制代码

(2)创建空集合

#创建空集合
setname = set()
py python复制代码

set()还可以将列表、元组等可迭代对象转换为集合
2.集合的添加和删除
添加元素

setname.add(element)
#element不能是列表、元组等可迭代对象
python复制代码

删除元素
(1)删除一个指定元素:remove()

setname.remove(元素名称)
python复制代码

(2)随机删除一个元素:pop()

setname.pop()
python复制代码

(3)删除全部元素:clear()

setname.clear()
python复制代码

删除集合

del setname
python复制代码

3.集合的交集、并集和差集运算

在这里插入图片描述
在这里插入图片描述
python = {"小明","赵四","小赵","李明","王强"} #选择Pyhon学生名字集合
java = {"赵四","小赵","张张","李华"} #选择Java学生名字集合
print("选择Pyhon学生名字:",python)
print("选择Java学生名字:",java)
print("交集运算",python & java) #既选择Pyhon又选择Java学生名字
print("并集运算",python | java) #参与选课的全部学生名字
print("差集运算",python - java) #选择Python但没有选择Java学生名字
python复制代码
在这里插入图片描述
在这里插入图片描述

5、列表、元组、字典、集合的区别

在这里插入图片描述
在这里插入图片描述

学习Python序列的应用(列表、元组、字典、集合)之后,了解并练习了列表、元组、字典、集合的一些常用操作。感觉收获很大,继续学习@_@


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 [email protected]

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK