python-重点!!序列:列表、元组、集合、字典、字符串

一、序列概述

1.序列结构主要有:列表、元组、集合、字典、字符串

其中,集合和字典不支持索引、切片和相乘操作

2.切片

访问序列中一定范围的元素

sname[start : end : step]

参数说明:

  • sname:序列名称
  • start:不指定则默认为0
  • end:不指定则默认为序列的长度
  • step:步长,若省略则默认为1

注:若要复制整个序列,中间冒号保留,如verse[:]

3.序列相加

使用“+”将相同类型的序列进行连接,但不去除重复的元素

num1 = [1,2,3]
num2 = [one,tow]
print(num1 + num2)  #>>>[1,2,3,one,tow]

注:相同类型指同为列表、元组、字符串等,序列中的元素类型可以不同

num1 = [1,2,3]
print(num + "输出其和")   #错误

4.乘法

num = [1,2,3]
print(num * 2)   #>>>[1,2,3,1,2,3]

enmpty = [None] * 3
print(empty)    #>>>[None,None,None]

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

语法:value in sequence

value即要检查的元素,sequence即指定的序列

返回值:True  /  False

6.计算序列的长度、最大值和最小值

长度:len()

最大值:max()

最小值:min()

其他内置函数:

  • list() 
  • str()
  • sum()   计算元素和
  • sorted()    对元素进行排序  

sort 与 sorted 区别:

sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象(iterable)进行排序操作。

list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。

list.sort()    list = sorted()

语法: sorted(iterable, key=None, reverse=False)  

参数说明:

  • iterable -- 可迭代对象。
  • key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。如,设置“key = str.lower”表示在排序时不区分字母大小写
  • reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)

返回值

返回重新排序的列表。

sorted([5, 2, 3, 1, 4])
#>>>[1, 2, 3, 4, 5]                      # 默认为升序

#也可以使用 list 的 list.sort() 方法。这个方法会修改原始的 list(返回值为None)。通常这个方法
#不如sorted()方便-如果不需要原始的 list,list.sort()方法效率会稍微高一些。
 a=[5,2,3,1,4]
 a.sort()
print(a)
#>>>[1,2,3,4,5]

#利用key进行倒序排序
 example_list = [5, 0, 6, 1, 2, 7, 3, 4]
 result_list = sorted(example_list, key=lambda x: x*-1)
 print(result_list)
#>>>[7, 6, 5, 4, 3, 2, 1, 0]

#要进行反向排序,也通过传入第三个参数 reverse=True:
example_list = [5, 0, 6, 1, 2, 7, 3, 4]
 sorted(example_list, reverse=True)
#>>>[7, 6, 5, 4, 3, 2, 1, 0]

:用 lambda 来创建匿名函数:

lambda [arg1 [,arg2,.....argn]]:expression
sum = lambda num1, num2: num1 + num2
 
# 调用sum函数
print "相加后的值为 : ", sum( 10, 20 )
print "相加后的值为 : ", sum( 20, 20 )

#>>>相加后的值为 :  30
#>>>相加后的值为 :  40

  • reversed()    反序序列中的元素
# 字符串
seqString = 'Runoob'
print(list(reversed(seqString)))
 
# 元组
seqTuple = ('R', 'u', 'n', 'o', 'o', 'b')
print(list(reversed(seqTuple)))
 
# range
seqRange = range(5, 9)
print(list(reversed(seqRange)))
 
# 列表
seqList = [1, 2, 4, 3, 5]
print(list(reversed(seqList)))



#>>>['b', 'o', 'o', 'n', 'u', 'R']
#>>>['b', 'o', 'o', 'n', 'u', 'R']
#>>>[8, 7, 6, 5]
#>>>[5, 3, 4, 2, 1]
  • enumerate()   将序列组合为一个索引序列,同时列出数据和数据下标,多用在for循环中
enumerate(sequence, [start=0])       start -- 下标起始位置
>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']
>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
>>> list(enumerate(seasons, start=1))       # 小标从 1 开始
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]

#普通的 for 循环
i = 0
seq = ['one', 'two', 'three']
for element in seq:
    print(i, seq[i])
    i += 1
#>>>0 one
#>>>1 two
#>>>2 three

#for 循环使用 enumerate
seq = ['one', 'two', 'three']
for i, element in enumerate(seq):   # i为索引,element为元素值,seq为序列名称
    print(i, element)
#>>>0 one
#>>>1 two
#>>>2 three

二、列表

https://blog.csdn.net/m0_73809176/article/details/127971868?spm=1001.2014.3001.5501

三、元组、字典、集合

https://blog.csdn.net/m0_73809176/article/details/127972422?spm=1001.2014.3001.5501

四、字符串

1.字符串编码

1.1背景信息

ASCLL码:仅对10个数字、26个大写英文字母、26个小写英文字母,以及一些其他符号进行了编码;(美国标准信息交换码,最早的字符串编码)

GBK、GB2312:是我国制定的中文编码标准,1个字节表示英文字母,2个字节表示中文字符

UTF-8:国际通用编码,1个字节表示英文字母,3个字节表示中文

在Python中,有两种常用的字符串类型,分别为str 和bytes 。其中,str表示Unicode字符(ASCLL或者其他);bytes表示二进制数据(包括编码的文本)。这两种类型的字符串不能拼接在一起用。通常情况下,str在内存中一Unicode表示,一个字符对应若干个字节。但是如果在网络上传输,或者保存在磁盘上,就需把str转换为字节类型即bytes类型。

1.2使用encode()方法编码

用于将字符串转换为二进制数据(即bytes),也称“编码”

语法:str.encode([encoding = "utf-8"][,errors = "strict"])

str:要进行转换的字符串

encoding = "utf-8" :可选参数,用于指定进行转码时采用的字符编码,默认为UTF-8

errors = "strict":可选参数,用于指定错误处理方式,其可选择值可以是strict(默认)(遇到非法字符就抛出异常)、ignore(忽略非法字符)、replace(用“?”替换非法字符)或xmlcharrefreplace(使用XML的字符引用)等

1.3使用decode()方法解码

decode()用于将二进制数据转换为字符串,也称“解码”

bytes.decode([encoding = "utf-8"][,errors = "strict"])

2.字符串常用操作

2.1拼接字符串  “+”

中间不会留空格,相同类型拼接

2.2计算字符串的长度

len(string)

str1 = '人生苦短,我用Python!'
len1 = len(str1)   #包括“,”、“!”
len2 = len(str1.encode())   #计算UTF-8编码的字符串的长度
print(len1)   #>>>14
print(len2)   #>>>28  汉字加中文标点符号共7个,占21个字节,英文字母和英文标点符号占7个字节

2.3截取字符串

2.4分割、合并字符串

  • 2.4.1分割字符串:split()方法--把一个字符串按照指定的分隔符切分为字符串列表

语法:str.split(sep,maxsplit)

sep:用于指定分隔符,可以包含多个字符,默认为None,即所有空字符(包括空格、换行符“\n”、制表符“\t”等)

maxsplit:可选参数,用于指定分割的次数,若不指定或者为-1,则分割次数没有限制,否则返回结果列表的元素个数最多为maxsplit+1

注:若不指定sep,那么也不能指定maxsplit参数

str1 = "我 的 目 标 是 卷 王 >>> kuai.le.xue.xi"
print("原字符串:",str1)
list1 = str1.split()     #采用默认分隔符进行分割
list2 = str1.split(">>>")   #采用多个字符进行分割
list3 = str1.split(".")    #采用“.”号进行分割
list4 = str1.split(" ",4)    #采用空格进行分割,并且只分割前4个
print(str(list1)+"\n"+str(list2)+"\n"+str(list3)+"\n"+str(list4))

"""
原字符串: 我 的 目 标 是 卷 王 >>> kuai.le.xue.xi
['我', '的', '目', '标', '是', '卷', '王', '>>>', 'kuai.le.xue.xi']
['我 的 目 标 是 卷 王 ', ' kuai.le.xue.xi']
['我 的 目 标 是 卷 王 >>> kuai', 'le', 'xue', 'xi']
['我', '的', '目', '标', '是 卷 王 >>> kuai.le.xue.xi']
"""
  • 2.4.2合并字符串:join()方法

语法:newstr = string.join(iterable)

将string加入到iterable后面

str1 = "我的目标是卷王 "
newstr = "@".join(str1)
print(newstr)    #>>>我@的@目@标@是@卷@王@

2.5检索字符串

  • 2.5.1 count()方法--用于检索指定字符串在另一个字符串中出现的次数

语法:str.count(sub[,start[,end]])

str :原字符串

sub: 要检索的子字符串

start:起始位置的索引;end:结束位置的索引

str1 = "我的目标是卷王 "
newstr = "@".join(str1)
print(newstr)    #>>>我@的@目@标@是@卷@王@

print(newstr.count("@")   #>>>7
print("字符串@符号首次出现的位置索引是:",newstr.find("@"))
#>>>字符串@符号首次出现的位置索引是:1

print("判断字符串是否以@符号开头:",newstr.startswith("@"))  
#>>>判断字符串是否以@符号开头:False

  • 2.5.2 find()方法--检索是否包含指定的子字符串。若检索的字符串不存在则返回-1,否则返回首次出现该子字符串的索引

str.find(sub[,start[,end]])

注:若只想判断指定的字符串是否存在,则用关键字“in”。如:print("@"innewstr),若存在就返回True,否则返回False

  • 2.5.3 index()方法--与find()方法相似。只不过使用index()方法,当指定的字符串不存在时会抛出异常。

语法:str.index(sub[,start[,end]])

注:rindex()方法,作用与index()方法相似,只不过从右边开始查找

  • 2.5.4 startswith()方法--用于检索字符串是否以指定字符串开头。返回值为True/False

语法:str.startswith(sub[,start[,end]])

  • 2.5.5 endswith()方法--用于检索字符串是否以指定字符串结尾。返回值为True/False

语法:str.endswith(sub[,start[,end]])

2.6字母的大小写转换

str.lower()   ABC --> abc

str.upper()   abc --> ABC

2.7去除字符串中的空格和特殊字符

这里的特殊字符是指制表符\t、回车符\r、换行符\n等

  • 2.7.1  strip()方法--用于去掉字符串左右两侧的空格和特殊字符

语法:str.strip([chars])

chars: 可选参数,用于指定要去除的字符,可以指定多个

str1 = " .@我爱卷.@.@. \n\r"
print(str1.strip())      #>>>.@我爱卷.@.@.   去除字符串首尾的空格和特殊字符
print(str1.strip("."))   #>>> .@我爱卷.@.@.   注:字符串首是一个空格
str2 = ".@我爱卷.@.@."
print(str2.strip("."))   #>>>@我爱卷.@.@
  • 2.7.2  lstrip()方法--用于去掉字符串左侧的空格和特殊字符

语法:str.lstrip([chars])

  • 2.7.3 rstrip()方法--用于去掉字符串右侧的空格和特殊字符

语法:str.rstrip([chars])

2.8格式化字符串

  • 2.8.1 使用%操作符

语法:"%[-][+][0][m][.n]格式化字符"%exp

参数说明:

- :可选参数,用于指定左对齐,正数2,负数-2(例子啊!)

+ :可选参数,用于指定右对齐,正数+2,负数-2

0 :可选参数,表示右对齐,正数+2,负数-2,用0填充空白处(一般与m参数一起使用)

m :可选参数,表示占有宽度

.n : 可选参数,表示小数点后保留的位数

格式化字符:用于指定类型,其值如下:

%s --字符串(采用str()显示)   %r -- 字符串(采用repr()显示) %c -- 单个字符

%o -- 八进制整数   %d或者%i -- 十进制整数   %e / %E -- 指数(基底写e/E)

%x -- 十六进制整数    %f / %F -- 浮点数   %% -- 字符%

exp : 要转换的项

tem = "编号:%09d\t公司名称: %s\t官网: http://www.%s.com"  #定义模板
contex = (7,"百度","baidu")
print(tem % contex)
#>>>编号:000000007	公司名称: 百度	官网: http://www.baidu.com
#注:09代表右对齐,用0填充空白处,占位9个宽度  d表示%d,十进制整数  \t制表符
  • 2.8.2 使用字符串对象的format()方法

语法:str.format(args)

str 用于指定字符串的显示样式(模板)用“{}”和“:”指定占位符,

格式:{[index][:[[fill]align][sign][#][width][.precision][type]]}

index : 可选参数,索引位置

fill:可选参数,用于指定空白处填充的字符

align:可选参数,用于指定对齐方式(值为“<”表示内容左对齐;“>”表示内容右对齐;“=”表示内容右对齐,将符号放在内容的最左侧,且只对数字类型有效;“^”表示内容居中对齐),需要配合width一起使用

sign:可选参数,用于指定有无符号数(值为“+”表示+2,-2;值为“-”表示2,-2;值为空格表示正数加空格,负数加负号)(这的2是举的例子)

#:可选参数,对于二、八、十六进制,若加上#表示会显示0b/0o/0x前缀,否则不显示

width:可选参数,表示占有宽度

.precision:可选参数,用于指定小数点后保留的位数

type:可选参数,用于指定类型,其值如下:

S -- 对字符串类型格式化   b -- 将十进制-->二进制表示再格式化

D -- 十进制整数   o -- 将十进制-->八进制表示再格式化

C -- 将十进制-->Unicode字符   x / X -- 将十进制-->十六进制表示再格式化

e / E -- 转换为科学计数法表示再格式化   f / F -- 转换为浮点数表示再格式化

g / G --自动在e和f或者E和F中切换    % -- 显示百分比

args用于指定要转换的项

https://blog.csdn.net/m0_73809176/article/details/127984059?spm=1001.2014.3001.5501

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python编程语言中,有四种常用的集合数据类型,它们分别是列表(List)、元组(Tuple)、字典(Dictionary)和集合(Set)。列表是一种有序和可更改的集合,允许重复的成员。元组是一种有序且不可更改的集合,也允许重复的成员。字典是一个无序、可变且有索引集合,其中没有重复的成员。而集合是一种无序和无索引集合,没有重复的成员。这四种集合数据类型在Python中都有着不同的特点和用途。 在Python中,列表元组字符串都属于序列,它们的元素都可以通过编号进行访问。而字典则属于映射,其中的元素是以键值对的形式存在的。集合则不属于序列或映射中的任何一种,它是一种独立的数据类型,用于存储一组不重复的元素。 总结起来,Python中的列表(List)、元组(Tuple)、字典(Dictionary)和集合(Set)都是常用的集合数据类型,它们各自有着不同的特点和用途。列表是有序和可更改的集合元组是有序且不可更改的集合字典是无序、可变且有索引集合集合是无序和无索引集合。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [浅谈python四种集合数据类型—【列表元组集合字典】](https://blog.csdn.net/QWERTYzxw/article/details/121479048)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [python 元组集合字典](https://download.csdn.net/download/weixin_38603219/13752298)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值