首页 > 编程语言 >Python基础语法(四)—列表、元组、字典、集合、字符串

Python基础语法(四)—列表、元组、字典、集合、字符串

时间:2023-05-18 15:32:05浏览次数:54  
标签:zeruns Python 元素 列表 字符串 元组 字典


Python基础语法(一):https://blog.zeruns.tech/index.php/archives/54/

Python基础语法(二):https://blog.zeruns.tech/index.php/archives/112/

Python基础语法(三):https://blog.zeruns.tech/index.php/archives/150/

Python基础语法(四):https://blog.zeruns.tech/index.php/archives/299/

列表

基本概念

  • 列表是有序的元素集合,所有元素放在一对中括号中,用逗号隔开,没有长度限制;
  • 列表索引值以0为开始值,-1为从未尾的开始位置。
  • 列表可以使用+操作符进行拼接,使用*表示重复。
  • 当列表元素增加或删除时,列表对象自动进行扩展或收缩内存,保证元素之间没有缝隙;
  • 列表中的元素可以是不同类型的

列表的使用方式

list = ["zeruns","blog","blog.zeruns.tech",9527,[0,1,2,[1,2]]]#创建一个列表,一个列表里可以有多种数据类型,甚至可以嵌套列表来做二或三维列表
#          0       1           2             3       4
#         -5      -4          -3            -2      -1
print(list[0])
print(list[2])
print(list[4][2])
print(list[4][3][0])
print(list[-1])
print(list[-2])
'''
结果:
zeruns
blog.zeruns.tech
2
1
[0, 1, 2, [1, 2]]
9527
'''

列表的基本操作

列表操作符

操作符含义

< list1 > + < list2 >

连接两个列表

< list > * < 整数类型 >

对列表进行整数次重复

< list >[< 整数类型 >]

索引列表中的元素

len( < seq > )

获取列表中元素个数

for < var > in < list > :

对列表进行循环列举

< list >[< 整数类型 > : < 整数类型 >]

取列表的一个子序列

< expr > in < list >

成员检查,判断< expr >是否在列表中

Python基础语法(四)—列表、元组、字典、集合、字符串_python

列表的相关方法

方法

方法含义

< list >.append( x )

将元素x增加到列表的最后

< list >.sort( )

将列表元素排序,默认为升序

< list >.reverse( )

将列表元素反转

< list >.index( )

返回第一次出现元素x的索引值

< list >.insert( i, x )

在位置i处插入新元素x

< list >.count( x )

返回元素x在列表中的数量

< list >.remove( x )

删除列表中第一次出现的元素x

< list >.pop( i )

取出列表中位置i的元素,并删除它

>>> a = [2,0,9,1,5]
>>> b = ['c','w','b','a']
>>> a.append(9)
>>> a
[2, 0, 9, 1, 5, 9]
>>> a.sort()
>>> a
[0, 1, 2, 5, 9, 9]
>>> a.reverse()
>>> a
[9, 9, 5, 2, 1, 0]
>>> b.sort()
>>> b
['a', 'b', 'c', 'w']
>>> a.index(5)
2
>>> a.insert(2,7)
>>> a
[9, 9, 7, 5, 2, 1, 0]
>>> a.count(9)
2
>>> a.remove(9)
>>> a
[9, 7, 5, 2, 1, 0]
>>> a.pop(0)
9
>>> a
[7, 5, 2, 1, 0]

列表推导式

  • 列表推导式(又称列表解析式)提供了一种简明扼要的方法来创建列表。
  • 它的结构是在一个中括号里包含一个表达式,然后是一个for语句,然后是 0 个或多个 for 或者 if 语句。那个表达式可以是任意的,意思是你可以在列表中放入任意类型的对象。返回结果将是一个新的列表,在这个以 if 和 for 语句为上下文的表达式运行完成之后产生。
  • 列表推导式的执行顺序:各语句之间是嵌套关系,左边第二个语句是最外层,依次往右进一层,左边第一条语句是最后一层。
data = [i for i in range(10)]
#等价于
data = []
for i in range(10):
    data.append(i)
'--------------分割线---------------'
data = [2**i for i in range(10)]
#等价于
data = []
for i in range(10):
    data.append(2**i)
'--------------分割线---------------'
data = [num for num in range(20) if num%2==1]
#等价于
data = []
for num in range(20):
    if num%2==1:
        data.append(num)

应用

一个学校,有3个办公室,现在有8位老师等待工位的分配,请编写程序,完成随机的分配

答案:

#encoding=utf-8

import random

# 定义一个列表用来保存3个办公室
offices = [[],[],[]]

# 定义一个列表用来存储8位老师的名字
names = ['A','B','C','D','E','F','G','H']

i = 0
for name in names:
    index = random.randint(0,2)    
    offices[index].append(name)

i = 1
for tempNames in offices:
    print('办公室%d的人数为:%d'%(i,len(tempNames)))
    i+=1
    for name in tempNames:
        print("%s"%name,end='')
    print("\n")
    print("-"*20)

运行结果如下:

Python基础语法(四)—列表、元组、字典、集合、字符串_python_02

元组

基本概念

  • 元组(tuple)是包含多个元素的类型,元素之间用逗号分割
    如:t1 =(123,456,“hello”)
  • 可以通过把若干元素放在一对圆括号中创建元组,如果只有一个元素的话则需要多加一个逗号,例如(3,)。
  • 也可以使用tuple()函数把列表、字典、集合、字符串以及range对象、map对象、zip对象或其他类似对象转换为元组。
  • 元组可以是空的,t2=()
  • 一个元组也可以作为另一个元组的元素,此时,作为元素的元组需要增加括号,从而避免歧义,如:t3=(123,456,(“hello”,“world”))
  • Python 的元组与列表类似,不同之处在于元组的元素不能修改。

元组的使用

>>> a = ('hello',2020,110)
>>> a
('hello', 2020, 110)
>>> a[1]
2020

元组中的元素值是不允许修改和删除的,但我们可以使用del语句来删除整个元组

>>> a = ('hello',2020,'blog.zeruns.tech')
>>> print(a)
('hello', 2020, 'blog.zeruns.tech')
>>> del a
>>> print(a)
Traceback (most recent call last):
  File "<pyshell#24>", line 1, in <module>
    print(a)
NameError: name 'a' is not defined

所谓元组的不可变指的是元组所指向的内存中的内容不可变。

>>> tup = ('r', 'u', 'n', 'o', 'o', 'b')
>>> tup[0] = 'g'     # 不支持修改元素
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> id(tup)     # 查看内存地址
4440687904
>>> tup = (1,2,3)
>>> id(tup)
4441088800    # 内存地址不一样了

字典

基本概念

  • 字典是无序的对象集合,使用键-值(key-value) 存储,具有极快的查找速度。
  • 键(key)必须使用不可变类型
  • 同一个字典中,键(key)必须是唯一
  • 字典的每个键值key= >value对用冒号:分割,每个键值对之间用逗号,分割,整个字典包括在花括号}中,格式如下所示:
  • dic = {key1 : value1, key2 : value2 }
  • 字典键一般是唯的,如果重复最后的一一个键值对会替换前面的,值不需要唯一。
  • 键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行
>>> hhh = {'website':'blog.zeruns.tech','name':'zeruns'}
>>> hhh['website']
'blog.zeruns.tech'

常用方法

方法

描述

keys()

返回字典中键的列表

values()

返回字典中值的列表

items()

返回tuples的列表。每个tuple由字典的键和相应值组成

clear()

删除字典的所有条目

copy()

返回字典高层结构的一个拷贝,但不复制嵌入结构,而只复制对那些结构的引用

update(x)

用字典x中的键值对更新字典内容。

get(x[,y]))

返回键x,若未找到该键返回none,若提供y,则未找回时返回y

str(x)

以字符串形式输出字典x

len(x)

返回字典x的元素个数,即键的总数。

>>> hhh = {'website':'blog.zeruns.tech','name':'zeruns'}
>>> hhh.keys()
dict_keys(['website', 'name'])
>>> hhh.values()
dict_values(['blog.zeruns.tech', 'zeruns'])
>>> hhh.items()
dict_items([('website', 'blog.zeruns.tech'), ('name', 'zeruns')])
>>> hhh.copy()
{'website': 'blog.zeruns.tech', 'name': 'zeruns'}
>>> awsl = {'website':'https://blog.zeruns.tech'}
>>> hhh.update(awsl)
>>> hhh
{'website': 'https://blog.zeruns.tech', 'name': 'zeruns'}
>>> hhh.get('website')
'https://blog.zeruns.tech'
>>> hhh.get('hhh','666')
'666'
>>> hhh.clear()
>>> hhh
{}
>>> dict = {'Name': 'zeruns', 'Age': 7, 'Class': 'First'}
>>> str(dict)
"{'Name': 'zeruns', 'Class': 'First', 'Age': 7}"

字典元素修改、添加与删除

  • 可以使用字典对象的pop()删除指定“键”对应的元素,同时返回对应的“值"
  • popitem()方法用于删除字典的一个键对,并返回一个包含两个元素的元组,其中的两个元素分别是字典元素的“键”和“值" .
  • 也可以使用del删除指定的“键”对应的元素。

集合

概述

  • Python集合是无序、可变的容器对象,所有元素放在一对大括号中,元素之间使用逗号分隔,同一个集合内的每个元素都是唯一的, 不允许重复,
  • 集合中只能包含数字、字符串、元组等不可变类型的数据,而不能包含列表.字典、集合等可变类型的数据,包含列表等可变类型数据的元组也不能作为集合的元素。
  • 集合中的元素是无序的,元素存储顺序和添加顺序并不一致。
  • 集合不支持使用下标直接访问特定位置上的元素,也不支持使用random中的choice()函数从集合中随机选取元素,但支持使用random模块中的sample()函数随机选取部分元素。

set(集合)

  • set和dict类似, 也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。
  • set是无序的,重复元素在set中自动被过滤。
  • 可以使用大括号{ }或者set()函数创建集合,注意:创建一个空集合必须用set()而不是{ },因为{ }是用来创建一个空字典。
  • set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集(&)、井集(|)、差集(-)等操作。

集合的常用方法

  • s = add(x):将元素x添加到集合s中,如果元素已存在,则不进行任何操作。
  • s = update(x):将x的元素添加到集合s中,x可以是列表,元组,字典等。
  • s.pop(x):随机删除集合中的一个元素。
  • s.remove(x):将元素x从集合s中移除,如果元素不存在,则会发生错误。
  • s.discard(x):将元素x从集合s中移除,如果元素不存在,不会发生错误
  • len(s):计算集合 s 元素个数。
  • s.clear():清空集合 s。

字符串

概述

  • 字符串(str)是用双引号""或者单引号’'括起来的一个或多个字符
  • 字符串可以保存在变量中,也可以单独存在
  • 字符串属于不可变对象,所有方法都是返回处理后的字符串或字节串,不对原字符串进行任何修改。

字符串操作

  • 字符串之间可以通过**+或***进行连接
  • 加法操作(+)将两个字符串连接成为一个新的字符串
  • 乘法操作(*)生成一个由其本身字符串重复连接而成的字符串
  • x in s:如果x是s的子串,返回True,否则返回False
  • str[N:M]:切片, 返回子串
  • len()函数能返回-一个字符串的长度
  • str1=“hello,world”
  • len(str1)
  • 大多数数据类型都可以通过str()函数转换为字符串:如str(123)
  • type()函数测试一个字符串的类型

字符串操作

操作

含义

+

连接

*

重复

< string >[ ]

索引

< string >[ : ]

剪切

len(< string >)

长度

< string >.upper()

字符串中字母大写

< string >.lower()

字符串中字母小写

< string >.strip()

去两边空格及指定字符

< string >.split()

按指定字符分隔字符串为数组

< string >.join()

连接两个字符串序列

< string >.find()

搜索指定字符串

< string >.replace()

字符串替换

for < var > in < string >

字符串迭代

常用方法

  • index(x)、rindex(x): 检测x是否包含在字符串中,返回相应的索引值,如果不存在。返回异常。
  • count(x):返回x在string里面出现的次数。
  • replace(str1,str2[,max]):把将字符串中的str1替换成str2,如果max指定,则替换不超过max次。
  • maketrans():创建字符映射的转换表。
  • translate(str):根据str给出的映射转换表转换string字符。
  • ljust(width[,fllchar]): 返回一个原字符串左对齐,并使用fillchar填充至长度width的新字符串,fillchar默认为空格。rjust()、center()类似。
  • split(str="",num=string.count(str)),其中num=string.count(str))以str为分隔符截取字符串,如果num有指定值,则仅截取num+1个子字符串。rsplit()类似,从右侧开始截取。
  • join(seq): 以指定字符串作为分隔符,将seq中所有的元素(的字符串表示)合并为一个新的字符串。
  • startswith(substr)、endswith(substr):检查字符串是否是以指定子字符串substr开头或结束,是则返回True。
  • strip()、rstrip()、lstrip(): 截取字符串的指定字符。

字符串格式化

python字符串格式化符号:

符 号

描述

%c

格式化字符及其ASCII码

%s

格式化字符串

%d

格式化整数

%u

格式化无符号整型

%o

格式化无符号八进制数

%x

格式化无符号十六进制数

%X

格式化无符号十六进制数(大写)

%f

格式化浮点数字,可指定小数点后的精度

%e

用科学计数法格式化浮点数

%E

作用同%e,用科学计数法格式化浮点数

%g

浮点型数据 会去掉多余的零 至多保留6位

%G

浮点型数据 会去掉多余的零 至多保留6位

%p

用十六进制数格式化变量的地址

格式化操作符辅助指令:

符号

描述

*

定义宽度或者小数点精度

-

用做左对齐

+

在正数前面显示加号( + )

< sp >

在正数前面显示空格

#

在八进制数前面显示零(‘0’),在十六进制前面显示’0x’或者’0X’(取决于用的是’x’还是’X’)

0

显示的数字前面填充’0’而不是默认的空格

%

‘%%‘输出一个单一的’%’

(var)

映射变量(字典参数)

m.n.

m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)

应用

编写程序,完成以下要求:
统计字符串中,各个字符的个数
比如:“hello world” 字符串统计的结果为: h:1 e:1 l:3 o:2 d:1 r:1 w:1

答案:https://gitee.com/zeruns/Python-programming-exercises/blob/master/%E5%9F%BA%E7%A1%80/%E7%BB%9F%E8%AE%A1%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E5%90%84%E5%AD%97%E7%AC%A6%E4%B8%AA%E6%95%B0.py


标签:zeruns,Python,元素,列表,字符串,元组,字典
From: https://blog.51cto.com/zeruns/6303960

相关文章

  • Python计算身份证第18位(校验码)来判断身份证是否输入正确
    Python计算身份证第18位(校验码)来判断身份证是否输入正确前言身份证编码规则如下:根据〖中华人民共和国国家标准GB11643-1999〗中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。顺序码(身份证第十五位到十七位)是县、区级政府所辖派出所的......
  • 如何在windows系统下下载、安装python程序及可视化工具PyCharm
    1、python下载python下载官网:https://www.python.org/http://python.p2hp.com/中文网点击进入官网,进入window下载页面。https://www.python.org/downloads/windows/选择安装版本:推荐下载稳定的老版本,找到相应版本进行下载。这里下载是3.6.8Windowsx86-64embedda......
  • Python从零到壹丨图像增强的顶帽运算和底帽运算
    摘要:这篇文章详细介绍了顶帽运算和底帽运算,它们将为后续的图像分割和图像识别提供有效支撑。本文分享自华为云社区《[Python从零到壹]四十九.图像增强及运算篇之顶帽运算和底帽运算》,作者:eastmount。数学形态学(MathematicalMorphology)是一种应用于图像处理和模式识别领域的新......
  • 字典遍历 dict1.values,dict1.keys,dict1.items
    ''''''dict1={'K1':'Aa','K2':'Bb','K3':'Cc'}forkindict1.keys():print(k,end='\t')print()forvindict1.values():print(v,end=&#......
  • Python的基础语法(三)之“语法结构”
    “语法结构”1、成员运算符:定义:就是查看某个个体是不是在某个群体里面1、in(在)2、notin(不在)names_list=['kevin','jack','tank','tony']print('kevin'innames_list)#Trueprint('aa'innames_list)#Falseprint('......
  • Python之元组 字典 集合
    Python列表Python之元组字典集合元组介绍元组的表现形式是tuple元组是一个不可变的序列(一般但这个数据不改变的时候,我们就采用元组,其余情况都用列表。)创建元组通过()创建元素tup=()print(tup,type(tup))()<class'tuple'>添加元素直接在元组中添加tup=()print(tup)tup......
  • Python之函数
    python元组,字典,集合Python之函数函数的简介函数也是一个对象函数可以用来保存可执行的代码,并且可以在需要是,对这些语句进行多次调用创建函数语法:>def函数名(形参1,形参2......):>代码块注意:函数名必须符合标识符的命名规范(可以包含字母、数字、下划线但是不......
  • python之基本数据类型
    搭建python环境python中的基本数据类型:1.表达式1.1表达式的概念:1.1.1表达式,是由数字、算符、数字分组符号(括号)、自由变量和约束变量等以求得数值的有意义排列方法所得的组合1.2表达式的特点:1.2.1表达式一般仅仅用于计算一些结果,不会对程序产生实质性的影响1.2.2如果在交互模式......
  • python之列表
    python条件控制语句python之列表序列:一种数据结构指计算机中数据的存储方式有顺序通过索引加以操作序列的分类:可变的序列列表不可变的序列字符串列表列表的概念:是python中的一种对象,可以保存多个有序的数据。注意:索引是从零开始的,依次向下类推,并且每一个元素之间要用逗号......
  • Python之计算机要点
    Python之计算机要点:1.计算机的概念:计算机俗称电脑,是现代用于高速计算的机器特点:数值计算存储记忆功能逻辑计算总结:能够按照程序运行、自动、高速处理数据的现代化智能电子设备计算机的组成:硬件+软件软件:就是一系列按照特定顺序组织的计算机数据和特定指令的集合2.计算机语言:......