本篇介绍列表,字符串,元组和字典中的详细操作,关于遍历,扩展,增删改查等操作。
一、字符串
字符串string,由数字,字母和特殊字符组成,可用引号(单引号或者双引号)括起来表示。
1. 访问字符串中的值
通过下标访问,第一个由0开始,最后一个从-1开始,也可以通过方括号内区间访问:
var1 = 'Hello World!'
var2 = "Python Runoob"
print("var1[0]: ", var1[0])
print("var2[1:5]: ", var2[1:5])
print("var2[-3:-1]: ", var2[-3:-1])
print("var2[-3:-1]: ", var2[-3:])
输出:
var1[0]: H
var2[1:5]: ytho
var2[-3:-1]: oo
var2[-3:-1]: oob
注:冒号前后少一个参数默认为从头开始,到尾结束。
2. 字符串连接
用加号连接,为直接连接,没有空格:
var1 = 'Hello World!'
print("输出1", var1[:] + 'Runoob!')
print("输出2", var1[:], 'Runoob!')
输出:
输出1 Hello World!Runoob!
输出2 Hello World! Runoob!
3. python字符串运算符
设当a="Hello",b="Python":
操作符 | 描述 | 实例 |
---|---|---|
+ | 字符串连接 | >>>a + b 'HelloPython' |
* | 重复输出字符串 | >>>a * 2 'HelloHello' |
[] | 通过索引获取字符串中字符 | >>>a[1] 'e' |
[ : ] | 截取字符串中的一部分 | >>>a[1:4] 'ell' |
in | 成员运算符 - 如果字符串中包含给定的字符返回 True | >>>"H" in a True |
not in | 成员运算符 - 如果字符串中不包含给定的字符返回 True | >>>"M" not in a True |
r/R | 原始字符串 - 原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 原始字符串除在字符串的第一个引号前加上字母"r"(可以大小写)以外,与普通字符串有着几乎完全相同的语法。 | >>>print r'\n' \n >>> print R'\n' \n |
% | 格式字符串 | 请看下一章节 |
4. 字符串格式化
在输出的时候会用到格式化输出字符串,即把一个字符串插入到一个%s中,跟C的语法一样:
print("My name is %s and weight is %d kg!" % ('Zara', 21))
输出:
My name is Zara and weight is 21 kg!
5. python三引号
三引号可以给复杂字符串赋值,也可以注解:
hi = '''hi
there'''
'''
# 这是一段注解
'''
print(hi)
输出:
hi
there
6. python字符串内建函数
方法 | 描述 |
---|---|
把字符串的第一个字符大写 | |
返回一个原字符串居中,并使用空格填充至长度 width 的新字符串,两个参数时第二个参数为填充字符,str.center(width, fillchar) | |
返回 str1 在 string 里面出现的次数, beg和end指定范围 | |
检查字符串是否以 obj 结束,beg 或者 end 指定范围。如果是,返回 True,否则返回 False. | |
把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8,即一个字符占八位,不够八位就用空格凑够 | |
检测 str 是否包含在 string 中,如果是返回匹配开始的索引值,否则返回-1 | |
格式化字符串 | |
跟find()方法一样,只不过如果str不在 string中会报一个异常. | |
如果 string 至少有一个字符,并且所有字符都是字母或数字,则返 回 True,否则返回 False | |
如果 string 至少有一个字符,并且所有字符都是字母,则返回 True, 否则返回 False | |
如果 string 只包含十进制数字,则返回 True ,否则返回 False. | |
如果 string 只包含数字则返回 True 否则返回 False. | |
如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False | |
如果 string 中只包含数字字符,则返回 True,否则返回 False | |
如果 string 中只包含空格,则返回 True,否则返回 False. | |
如果 string 是标题化的(见 title())则返回 True,否则返回 False | |
如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False | |
以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串 | |
返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串 | |
转换 string 中所有大写字符为小写. | |
截掉 string 左边的空格 | |
maketrans() 方法用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。 | |
返回字符串 str 中最大的字母。 | |
返回字符串 str 中最小的字母。 | |
有点像 find()和 split()的结合体,从 str 出现的第一个位置起,把 字 符 串 string 分 成 一 个 3 元 素 的 元 组 (string_pre_str,str,string_post_str),如果 string 中不包含str 则 string_pre_str == string. | |
把 string 中的 str1 替换成 str2,如果 num 指定,则替换不超过 num 次. | |
类似于 find() 函数,返回字符串最后一次出现的位置,如果没有匹配项则返回 -1。 | |
类似于 index(),不过是从右边开始. | |
返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串 | |
类似于 partition()函数,不过是从右边开始查找 | |
删除 string 字符串末尾的空格. | |
以 str 为分隔符切片 string,如果 num 有指定值,则仅分隔 num+1 个子字符串 | |
按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。 | |
检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查. | |
在 string 上执行 lstrip()和 rstrip() | |
翻转 string 中的大小写 | |
返回"标题化"的 string,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle()) | |
根据 str 给出的表(包含 256 个字符)转换 string 的字符, 要过滤掉的字符放到 del 参数中 | |
转换 string 中的小写字母为大写 | |
返回长度为 width 的字符串,原字符串 string 右对齐,前面填充0 |
以上为python字符串常用的内置函数,一般知道有啥就行,然后即用即查,查着查着就会写了。
一般来说,常用的操作有字符串拼接(+),在特定位置截断字符串(split和 [ : ] ),找特定字符和字符串出现的位置(find和index),统计特定字符串的次数(count)。记下这些用的熟练即可。
7. 关于其他数据类型转换为字符串
(1)复数complex可以转化为string(废话这是当然的),转化出来的字符串带了括号和加号,括号和加号都当作了字符串的一部分,加入长度和;
(2)列表list,元组tuple和字典dic都可以转换成字符串,转出来的字符串带了各自的括号,中间用逗号隔开。
二、列表
列表List,有序的对象集合,用下标访问,列表中每个元素可以是不同类型,用 "[ ]" 标识,且可以重新赋值,根据下标存取和修改数据,可添加新元素,删除元素;
需要注意的几点:
(1)可以截断,组合等;
(2)内置了确定序列长度,最大和最小元素的方法;
1. 操作列表中的元素
(1)访问列表中的值(同时也可截取):list[2:5];
(2)更新列表:list.append(“Google”);
(3)删除列表元素:del list[2];删除第三个元素,完后自动向前递,长度减一。
2. 列表函数
包含以下函数:
序号 | 函数 |
---|---|
1 | cmp(list1, list2):比较两个列表的元素,python不再用,使用operator.eq( , )函数 |
2 | len(list):列表元素个数 |
3 | max(list):返回列表元素最大值,相同类型,即数字或者字符串 |
4 | min(list):返回列表元素最小值,相同类型,即数字或者字符串 |
5 | list(seq):将元组转换为列表 |
注解:
(1)其中max和min的参数列表中,参数类型应该相同,同为数字或者字符串;
(2)比较两个列表中的元素,应用operator库中的函数,主要有:
函数 | 含义 |
---|---|
operator.lt(a, b) | a < b |
operator.le(a, b) | a <= b |
operator.eq(a, b) | a == b |
operator.ne(a, b) | a != b |
operator.gt(a, b) | a > b |
operator.ge(a, b) | a >= b |
3. 列表方法
序号 | 方法 |
---|---|
1 | list.append(obj):在列表末尾添加新的对象 |
2 | list.count(obj):统计某个元素在列表中出现的次数 |
3 | list.extend(seq):在列表末尾一次性追加另一个序列中的多个值,list为源列表,seq是加在后面的序列 |
4 | list.index(obj):从列表中找出某个值第一个匹配项的索引位置 |
5 | list.insert(index, obj):将对象插入列表中的指定位置(index),其他元素依次后移 |
6 | list.pop( index ):移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 |
7 | list.remove(obj):移除列表中某个值的第一个匹配项 |
8 | list.reverse():反向列表中元素,但要注意该方法没有返回参数,操作后直接逆转本列表 |
9 | list.sort(cmp=None, key=None, reverse=False):对原列表进行排序,reverse为true时降序,反之升序(默认),同时列表中元素类型相同 |
总结:
列表主要操作有,增加元素(append,extend),删除元素(pop和remove),统计某个元素出现的次数(count),自动排序(sort),还有逆转列表(reverse),查找元素(index)。
三、元组
元组Tuple:有序对象集合,用下标访问,元组中每个元素可以是不同类型,用 " ( ) " 标识,不能删除和修改元素,也不可以添加新元素,但可以删除整个元组,相当于只读列表;
1. 元组创建
用( )括起来,里面的元素用逗号隔开;
有需要注意:只有一个元素时,需要加逗号,不然会被识别成该元素类型。
2. 访问元组
同列表,也可以相同方法截取;
3. 修改元组
元组里的值不允许修改,但可以进行拼接,依然+号:
4. 删除元组
元组里的元素不允许删除,但可以删除整个元组,使用del tuple即可删除:
tup = (12,34.56)
print(tup)
del tup
print(tup)
输出:
(12, 34.56)
Traceback (most recent call last):
File "E:/py_code/Drug-Drug-Interaction-Prediction-master/parctice.py", line 6, in <module>
print(tup)
NameError: name 'tup' is not defined
5. 元组内置函数
完全同列表内置函数。
总结:
元组不能添加或者修改或者删除元素,只能删除整个元组;但可以拼接进行扩展(+),引用和遍历跟列表一样,内置函数也一样。方法可以使用count和index,用来统计和查询。其他的不行、
四、字典
字典Dictionary:无序的对象集合,通过键来存取,用 “{ }” 标识,由索引key和对应的值value组成,添加只需要添加key和赋予相应的value即可。
需要注意的点:
(1)每个键值对中,键值可以是任意数据类型,但键必须是不可变的,如字符串,数字或元组,不能是列表;
1. 访问字典里的值
把相应的键放入方括号即可:
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First',8:'125'}
print(dict["Name"])
print(dict['Age'])
print(dict[8])
输出:
Zara
7
125
2. 修改或者新增字典中的键值对
修改直接修改,增加也是直接增加。
3. 删除字典元素
既能删除单一的元素,也能删除整个字典,都用del命令,还有清空字典的clear命令:
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
del dict['Name'] # 删除键是'Name'的条目
dict.clear() # 清空字典所有条目
del dict # 删除字典
4. 字典内置函数
内置函数如下:
(1)比较函数同上,即operate.eq(dic1,dic2),不相等就会返回flase。但不能使用gt或者lt,即大于或者小于,字典不能比较大小;
(2)字典长度:len(dict);
5. 内置方法
序号 | 函数及描述 |
---|---|
1 | dict.clear():删除字典内所有元素 |
2 | dict.copy():返回一个字典的复制 |
3 | dict.fromkeys(seq[, val]):创建一个新字典,以序列 seq 中元素做字典的键,val 为字典所有键对应的初始值 |
4 | dict.get(key, default=None):返回指定键的值,如果值不在字典中返回default值 |
5 | dict.has_key(key):如果键在字典dict里返回true,否则返回false |
6 | dict.items():以列表返回可遍历的(键, 值) 元组数组,遍历时采用for循环遍历for key,values in dict.items() |
7 | dict.keys():以列表返回一个字典所有的键 |
8 | dict.setdefault(key, default=None):和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default |
9 | dict.update(dict2):把字典dict2的键/值对更新到dict里,最后dict变成了原来的dict加上dict2键和值的新字典; |
10 | dict.values():以列表返回字典中的所有值 |
11 | pop(key[,default]):删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。 |
12 | dict.popitem():返回并删除字典中的最后一对键和值。 |
注意:
(1)键值可以是任意元素类型,但键不能是列表;
(2)字典的比较只能比较相等或者不等,比不了大小;
总结:
对于列表和字符串和元组,都有如下操作:
(1)截取:str/list [ 参数1:参数2],此时两个参数可以各自省略;
(2)计算长度:len(变量名)
(3)引用时方法相同str/list [下标 ],前面从0开始,后面-1开始;
(4)+ 代表拼接,* 代表重复;
(5)直接查询:3 in [1, 2, 3]或者 ‘a' in 'abc';
(6)遍历:for x in [1, 2, 3];for x in 'abcddg';
如下表:
Python 表达式 | 结果 | 描述 |
---|---|---|
len((1, 2, 3)) | 3 | 计算元素个数 |
(1, 2, 3) + (4, 5, 6) | (1, 2, 3, 4, 5, 6) | 连接 |
('Hi!',) * 4 | ('Hi!', 'Hi!', 'Hi!', 'Hi!') | 复制 |
3 in (1, 2, 3) | True | 元素是否存在 |
for x in (1, 2, 3): print x, | 1 2 3 | 迭代 |
注意点:
(1)python3.X版本中,cmp函数被去掉,可以导入operate包进行元组,列表和字典的比较,其中元组和列表可以比较大小,即谁大谁小,使用gt和lt,但是字典只能使用eq来比较是否相等。同时字符串的比较直接使用<,>,==即可;