Python序列结构

序列结构:列表(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 条件表达式}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,179评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,229评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,032评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,533评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,531评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,539评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,916评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,813评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,568评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,654评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,354评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,937评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,918评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,152评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,852评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,378评论 2 342

推荐阅读更多精彩内容

  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,141评论 0 9
  • 一、概要 在Python中,最基本的数据结构是序列(sequence)。序列中的每个元素被分配一个序号——即元素的...
    唯老阅读 663评论 1 6
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,724评论 0 38
  • 1.SQL执行顺序 2.查询 3.分组 除了count,还有max,min,sum,avg等函数,也叫做聚合函数 ...
    apricoter阅读 4,726评论 0 71
  • 鱼那么信任水,水却煮了鱼 叶子那么信任风,风却吹落了叶 人心的冷暖总是会变换的 熟悉的陌生了,陌生的走远了……… ...
    黎茉雅安阅读 229评论 0 0