美文网首页Python
Python序列结构

Python序列结构

作者: Recalcitrant | 来源:发表于2019-04-22 23:33 被阅读0次

序列结构:列表(list)、元组(tuple)、集合(set)、字典(dict)、字符串(str)

一.字符串(str)

1.创建

string1 = "字符串常量"
string2 = '字符串常量'
  • 关于单双引号的使用
string1 = 'hello, "c"'
print(string1)
string2 = "hello, 'c'"
print(string2)
输出结果

2.访问元素

可通过索引值随机访问

string = "abcdef"
print(string[2])
输出结果

3.切片

切片:截取序列一部分的操作

对象名[起始值:终止值:步长]

[起始值,终止值)前闭后开
至少含一个冒号':'

对象名:要截取的对象
起始值:缺省默认为0
终止值:缺省默认取到最后一个元素
步长:缺省默认为1,若步长为负数,则反向截取

  • 示例
string = 'abcdefg'
print("1."+string[0:3])        # 1.string[0]到string[2]
print("2."+string[2:])         # 2.string[2]到最后一个元素
print("3."+string[1:-1])       # 3.string[1]到倒数第二个个元素

print("4."+string[:])          # 4.遍历
print("5."+string[::-1])       # 5.反向遍历

print("6."+string[::2])        # 6.步长为2
print("7."+string[5:1])        # 7.默认步长为1
print("8."+string[5:1:-1])     # 8.string[5]到string[2]
输出结果

4.字符串常见操作

常用方法:find(),count(),replace(),split(),join(),strip()

检索与检查:find()、index()、count()、startswith()、endswith()
字符串分割为列表:split()、partition()、splitlines()
列表连接为字符串:join()
填充对齐:ljust()、rjust()、center()
删除对齐:lstrip()、rstrip、strip()
替换:replace()
类型判定:isX()

(1)字符串检索

find()、index()、count()、startswith()、endswith()

  • 1.find()方法
    ①find()方法

主串.find("子串",起始索引值,终止索引值)

str.find(sub, _start, _end)

检查目标字符串中是否包含在主串中(查找子串)。如果在,返回开始的索引值;否则,返回-1。

起始索引值:缺省从头开始检索
终止索引值:缺省检索至尾

②rfind()方法

主串.rfind("子串",起始索引值,终止索引值)

从右端开始检查

  • 2.index()方法
    ①index()方法

主串.index("子串",起始索引值,终止索引值)

str.index(sub, _start, _end)

与find()方法相同,只不过未找到目标字符串会抛出一个异常。

起始索引值:缺省从头开始检索
终止索引值:缺省检索至尾

②rindex()方法

主串.index("子串",起始索引值,终止索引值)

从右端开始检查

  • 3.count()方法

主串.count("子串",起始索引值,终止索引值)

str.count(sub, _start, _end)

返回目标字符串在主串中出现的次数。

起始索引值:缺省从头开始检索
终止索引值:缺省检索至尾

  • 4.startswith()方法
str.startswith(prefix,start,end)

检测目标字符串是否以prefix为开头,返回真值。

  • 5.endswith()方法
str.endswith(suffix,start,end)

检测目标字符串是否以suffix为结尾,返回真值。

(2)字符串分割

split()、partition()、splitlines()

  • 6.split()方法

主串.split("分隔符",分割个数)

str.split(sep, maxsplit)

以分隔符分割目标字符串,返回一个列表。如果maxsplit(分割个数)指定值,那么仅分割maxsplit(分割个数)个。
示例:

print("abcdefgabcdefgabcdefg".split("c", 2))
运行结果
  • 7.partition()方法
    ①partition()
name.partition(sep)

把目标字符串以sep分割成3部分:sep前的所有字符组成的、sep中的所有字符、sep后的所有字符组成的三段字符串。
②rpartition()
右起分割。

  • 8.splitlines()方法
line.splitlines([keepends])

返回由目标字符串中各行组成的列表,在行边界的位置拆分。
结果列表中不包含行边界(即\n),除非给出了 keepends 且为真值。

(3)字符串合并

join()

  • 9.join()方法
str.join(iterable)

返回一个由 iterable 中的字符串拼接而成的字符串。
如果 iterable 中存在任何非字符串值包括 bytes 对象则会引发 TypeError
调用该方法的字符串将作为元素之间的分隔。

  • 示例
list = ["hello","world"]
print("连接前:",list)
str = ",".join(list)
print("连接后:",str)
运行结果

(4)字符串转换

capitalize()、title()、upper()、lower()

①大写转换

  • 10.capitalize()
str..capitalize()

返回原字符串的副本,其首个字符大写,其余为小写。

  • 11.title()
str.title()

返回原字符串的标题版本,其中每个单词第一个字母为大写,其余字母为小写。

  • 12.upper()
str.uppper()

返回原字符串的副本,其中所有区分大小写的字符均转换为大写。
注意:如果 str 包含不区分大小写的字符或者如果结果字符的 Unicode 类别不是 "Lu" (Letter, uppercase) 而是 "Lt" (Letter, titlecase) 则 str.upper().isupper() 有可能为 False

②小写转换

  • 13.lower()
str.lower()

返回原字符串的副本,其所有区分大小写的字符均转换为小写。

(5)填补与删除空格

ljust()、rjust()、center()
lstrip()、rstrip、strip()

①填充空格

  • 14.ljust()
str.ljust(width,[fillchar])

返回长度为 width 的字符串,原字符串在其中靠左对齐。
如果 width 小于等于 len(str) 则返回原字符串的副本。
使用指定的 fillchar 填充空位 (默认使用 ASCII 空格符)。

  • 15.rjust()
str.rjust(width,[fillchar])

返回长度为 width 的字符串,原字符串在其中靠右对齐。
如果 width 小于等于 len(str) 则返回原字符串的副本。
使用指定的 fillchar 填充空位 (默认使用 ASCII 空格符)。

  • 16.center()
str.center(width,[fillchar])

返回长度为 width 的字符串,原字符串在其中居中对齐。
如果 width 小于等于 len(str) 则返回原字符串的副本。
使用指定的 fillchar 填充空位 (默认使用 ASCII 空格符)。

②删除空格

  • 17.lstrip()
str.lstrip([chars])

返回原字符串的副本,移除其中的前导字符。
chars参数为指定要移除字符的字符串。如果省略或为None,则 chars 参数默认移除空格符。 实际上 chars 参数并非指定单个前缀,而是会移除参数值的所有组合。

  • 18.rstrip()
str.rstrip([chars])

返回原字符串的副本,移除其中的末尾字符。
chars参数为指定要移除字符的字符串。如果省略或为None,则 chars 参数默认移除空格符。 实际上 chars 参数并非指定单个前缀,而是会移除参数值的所有组合。

  • 19.strip()
str.strip([chars])

返回原字符串的副本,移除其中的前导和末尾字符。
chars参数为指定要移除字符的字符串。如果省略或为None,则 chars 参数默认移除空格符。 实际上 chars 参数并非指定单个前缀,而是会移除参数值的所有组合。

(6)字符串替换

replace()

  • 20.replace()
str.replace(old, new, count)

返回字符串的副本,其中出现的所有子字符串 old 都将被替换为 new。
如果给出了可选参数 count,则只替换前 count 次出现。

(7).字符串判定(isX方法)

方法 说明
isalpha() 判断字符串是否是否只含字母,返回真值
isdigit() 判断字符串是否是否只含数字,返回真值
isalnum() 判断字符串是否是否只含字母或数字,返回真值
isspace() 判断字符串是否只含空格、制表符和换行符,返回真值
isupper() 判断字符串是否只含大写字母,返回真值
islower() 判断字符串是否只含小写字母,返回真值

二.列表(list)

1.创建

list = []    #创建空列表
list = [元素表列]

2.访问元素

可通过索引值随机访问

array = ["hello", 'world', 666, 1024]
print(array[2])
运行结果

3.遍历

  • for循环
for x in list:
    print(x)
  • while循环
i = 0
while i < len(list):
    print(list[i])
    i += 1
  • 同时遍历多个列表
    zip()函数
zip([iterable, ...])

将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

示例:

a = [1,2,3]
b = [4,5,6,7]
c = [4,5,6,7,8]
zipped = zip(a,b,c)       #对象地址
print(zipped)
print(list(zipped))
运行结果.png

4.增删查改

(1)添加元素

  • append()方法
list.append(object)

表尾追加元素。

  • insert()方法
list.insert(index, object)

在指定位置index(索引号)前插入元素object。

  • extend()方法
list.extend(iterable)

将另外一个集合添加到列表中。

(2)删除元素

  • del
del list[index]

根据下表进行删除。

  • pop()
list.pop([index])

删除最后一个元素(无参数时)。

  • remove()
list.remove(object)

根据元素值进行删除。

(3)查找元素

  • in 和 not in
    判断元素是否在列表中,返回真值。
  • index()
list.index(元素值)

按元素值查找元素,返回该元素的索引值。

(4)修改元素

可通过索引值随机访问修改。

5.排序

  • sort()
list.sort(key, reverse)

对列表进行原地排序(原列表会被修改)。

key:指定带有一个参数的函数,用于从每个列表元素中提取比较键 (例如 key=str.lower),默认值为 None (直接比较元素)。
reverse:reverse为一个布尔值。如果设为 True,则每个列表元素将按反向顺序比较进行排序。

注意:此方法异常不会被屏蔽(如果有任何比较操作失败,整个排序操作将失败,而列表可能会处于被部分修改的状态)。

  • sorted()
sorted(iterable, key, reverse)

根据 iterable 中的项返回一个新的已排序列表。

.sort()与sorted()的区别

区别1
.sore()是对原来的列表进行修改排序。
sorted()是对原来的列表进行排序后返回一个新的列表,不修改原来的列表。
区别2
.sore()属于列表成员方法,调用形式list.sort()。
sorted()对所有可迭代对象都可进行操作,调用形式sorted(list)。

6.列表推导式

列表推导式即轻量级循环创建列表

list = [i for i in range(n) if 条件表达式]
list = [常量 for _ in range(n) if 条件表达式]

7.列表转化为字符串

使用str()方法

三.元组(tuple)

1.创建

tuple = ()    #创建空元组
tuple = (元素, ...)

注意:在通过赋值创建单元素元组时,该元素后必须加逗号。

b = (21122)
print(type(b))
c = (21122,)
print(type(c))
运行结果

2.访问元素

可通过索引值随机访问

t = ('ddd', 1024, 0.88)
print(t[2])
运行结果

3.遍历

  • for循环
  • while循环
  • zip()函数
    zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

4.不可变性

  • 不允许添加
  • 不允许修改
  • 不允许删除

四.字典(dict)

1.创建

info = {}       # 创建空字典
info = {键:值,...}

2.访问元素

  • 根据键进行访问
info = {'name': '刘强东', 'age': 45, 'id': 351281197303107845, 'addr': '北京'}
print(info['name'])
运行结果

访问不存在的键抛出KeyError。

  • .get()方法
get(key[, default])

使用get()方法时,访问不存在的键返回None(不会抛出异常),且能通过第二个参数制定默认值。
示例:

info = {'name': '刘强东', 'age': 45, 'id': 351281197303107845, 'addr': '北京'}
age = info.get('age', 36)
print(age)
mail = info.get('mail')
print(mail)
mail = info.get('mail', '123@jingdong.com')
print(mail)
运行结果

3.遍历

for key,value in dict.items():
    print(key,'->',value)

4.销毁与清空

  • 销毁字典
del dict
  • 清空字典
dict.clear()

5.增删查改

(1)添加元素

dict[键] = 值

若键在原字典中存在,此操作则为修改键值操作
若键在原字典中不存在,此操作则为键值对添加操作。

(2)删除元素

根据键进行删除。

del dict[键]

(3)查找元素

根据键进行查找。

(4)修改元素

dict[键] = 新值

6.字典常见操作

len(),.keys(),.values(),.items()

  • len()
    返回字典中键值对的个数
  • .keys()
    返回字典中所有的键
  • .values()
    返回字典中所有的值
  • .items()
    返回字典中所有的键值对
    示例:
info = {'name': '刘强东', 'age': 45, 'id': 351281197303107845, 'addr': '北京'}
print(len(info1))           # 返回字典中键值对的个数
keys = info.keys()          # 返回字典中所有的键
print('键:', keys)
values = info.values()      # 返回字典中所有的值
print('值:', values)
items = info.items()        # 返回字典中所有的键值对
print('键值对:', items)
运行结果

7.字典解析式

dict = {键:值 for i in range(n) if 条件表达式}
dict = {键:值 for _ in range(n) if 条件表达式}

五.集合(set)

1.创建

set = set()   
set = {元素,...}

2.访问元素

集合属于无序序列,元素唯一,一般用于列表元组元素去重。
不支持下标索引随机访问,只能一次输出集合中所有元素(输出元素顺序随机)。

3.遍历

for elem in set:
    print(elem)

4.增删查改

(1).添加元素

  • .add()方法
set.add(element)

(2)删除元素

  • .remove()方法
    删除指定值的元素,删除不存在的元素会报错。
set.remove(element)
  • .discard()方法
    删除指定值的元素,删除不存在的元素不做任何操作,不会报错。
set.discard(element)
  • .pop()方法
    随机删除集合中的元素(从左起删除元素,带有随机性)。
set.pop()

(3)查找元素

  • in 和 not in
    判断元素是否在集合中,返回真值。

(4)修改元素

  • update()方法
    修改当前集合,可以添加新的元素或集合到当前集合中,如果添加的元素在集合中已存在,则该元素只会出现一次,重复的会忽略。
set.update(iterable)

5.集合解析式

set = {i for i in range(n) if 条件表达式}
set = {随机数 for _ in range(n) if 条件表达式}

相关文章

  • 数据团Python_3. Python序列及整体概述及通用操作

    3. Python序列及整体概述及通用操作 序列是Python最基本的数据结构。 序列可变序列:list不可变序列...

  • pickle- Python对象序列化

    pickle模块实现Python对象结构的二进制协议序列化和反序列化。pickling将Python对象层次结构转...

  • python快速入门

    面对过程: 面对对象: 数据结构 python最基本的数据结构是 序列 python包括6种内建数据序列:列表、元...

  • Python序列结构

    序列结构:列表(list)、元组(tuple)、集合(set)、字典(dict)、字符串(str) 一.字符串(s...

  • python - Lists

    2018-05-07 python - Lists Python中最基本的数据结构是序列。序列中的每个元素都被分配...

  • Python自学笔记Day12

    Python自学笔记——Day12 循环前置知识 1.1 列表list 序列是Python中最基本的数据结构。序列...

  • 使用json模块

    json模块是python内置的用于序列化的模块。 序列化和反序列化 序列化就是将python类型的数据结构转换为...

  • Python起步——序列

    序列 在python种,最基本的数据结构就是序列。Python中包含6种内建的序列,分别是:列表、元组、字符串、U...

  • python模块 | pickle:python对象序列化

    一 什么是pickle pickle实现了用于python对象结构的序列化和去序列化的协议; 会把python转成...

  • python中的数据结构类型-序列

    在python中序列是最基本的数据结构。是一块用于存放多个值的连续的内存空间。python内置了五个常用的序列结构...

网友评论

    本文标题:Python序列结构

    本文链接:https://www.haomeiwen.com/subject/tsvsgqtx.html