Python字典、列表、字符串操作全总结

Python字典操作总结

字典相对于列表,查找速度快,不会随着元素增多而变慢,时间复杂度O(1),并且字典是另一种可存储任意类型对象。

字典中存储的元素都是键值对(key:value),键值之间用冒号(:)分割, 每个字典元素(键值对)之间用逗号(,)分割, 整个字典包括在花括号 {} 中。

{key1:value1,key2:value2,key3:value3}

字典的key是唯一的,并且可以是任意的不可变对象(int、str、bool、tuple ...),但是一般我们都使用str作为字典的key。字典的值不需要唯一, 可以为任何的数据类型,字典的key不能重复的,否则后边的会替换到前边的值。

1.元素访问

有两种访问元素的方式

直接通过key来获取, 如果key不存在,则会抛出错误。

使用 get 方法来根据键获得值, key不存在则默认返回 None,返回值也可自定义。

d = {'name': 'Tom', 'age': 18, 'gender': 'male'}
#使用key获取
print(d['name'])
#使用get方法获取
print(d.get('name'))
print(d.get('weight',"170"))
2.删除清空元素

使用 pop 方法根据 key 来删除字典中的元素。

del 删除字典或指定的键值对。

使用clear清空元素。

d = {'name': 'Tom', 'age': 18, 'gender': 'male'}
# 删除某个key指定的元素
d.pop('name')
del d['age']
#删除整个字典
del d
# 清空字典
d.clear()
3.新增或修改元素

(有则更新,无则新增)

直接通过key来进行修改或者新增,当key存在为修改,键不存在, 默认为新增元素。

d = {'name': 'Tom', 'age': 18, 'gender': 'male'}
d['name'] = 'Lily'#修改元素
d['weight']=180#新增元素,使用update可以批量更新
4.遍历元素

字典是非序列式容器, 无法通过逐个元素获取, 需要先将字典转换成类似列表的形式, 再对其进行遍历。

1.通过字典的 keys 方法,获得字典key的列表, 然后根据key进行遍历。

d = {'name': 'Tom', 'age': 18, 'gender': 'male'}
for k in d.keys():
    print(k,d[k])
输出:
name Tom
age 18
gender male

2.通过字典的 values 方法,获得字典值的列表。

d = {'name': 'Tom', 'age': 18, 'gender': 'male'}
for value in d.values():
    print(value)

3.通过字典的 items 方法,返回可迭代对象,内部是元组,元组有2个数据,一个是字典key,一个是字典的value

d = {'name': 'Tom', 'age': 18, 'gender': 'male'}
for item in d.items():
    print(item)
输出:
('name', 'Tom')
('age', 18)
('gender', 'male')

Python列表操作总结

1.列表添加元素

列表中可以使用append、insert、extend方法实现元素的添加。

append会把新元素添加到列表末尾

A = ["a", "b", "c"]
A.append("d")
print(A)
输出
['a', 'b', 'c', 'd']

insert(index, object) 在指定位置index前插入元素object

A = ["a", "b", "c"]
A.insert(0, "d")
print(A)
输出
['d', 'a', 'b', 'c']

通过extend可以将另一个集合中的元素逐一添加到列表中(合并)

A = [1, 2]
B = [3, 4]
A.extend(B)
print(A)
输出
[1, 2, 3, 4]
2.列表删除元素

列表中使用方法del、pop、remove实现元素删除

del:根据下标进行删除

list01=["python","java","go"]
del list01[2]
print(list01)
输出
['python', 'java']

pop:弹出,删除最后一个元素(默认删除索引为-1的数据)

list01=["python","java","go"]
list01.pop()
print(list01)
list01.pop(1)
print(list01)
输出
['python', 'java']
['python']

remove:用于移除列表中第一个匹配项

list01=["python","java","go"]
list01.remove("java")
print(list01)
输出
['python', 'go']
3.列表元素的修改

列表可以通过指定下标来访问元素,也可以通过指定列表下标赋值。

fruits = ["apple", "banana", "cherry"]
fruits[-1]="pear"
print(fruits)
输出
['apple', 'banana', 'pear']
4.查找元素

所谓的查找,就是看看指定的元素是否存在,列表中关于查找的方法主要有如下几种:in, not in, index, count

in, not in

  • in(存在),如果存在那么结果为true,否则为false
  • not in(不存在),如果不存在那么结果为true,否则false
namelist = ['xiaoMing','xiaoZhang','xiaoHua']
print("xiaoMing" in namelist)
print("xiaoMing" not in namelist)
输出
True
False

index:从左到右查找,返回符合条件的第一个元素的索引,没有找到,则报错

namelist = ['xiaoMing', 'xiaoZhang', 'xiaoHua']
print(namelist.index("xiaoMing"))
print(namelist.index('xiaoZhang', 0, 2))  # 指定范围,左闭右开
输出
0
1

count:返回要统计的元素在列表中的个数

A = ["a", "b", "c","a","a"]
print(A.count("a"))
输出
3
5.列表的排序

sort方法是将list按ASCII码排列,默认为由小到大,参数reverse=True可改为倒序,由大到小。

sorted()不会改变原来的list,而是会返回一个新的已经排序好的list

sort()方法仅仅被list所定义,sorted()可用于任何一个可迭代对象,其会返回none

A = [5, 1, 4, 2, 3]
A.sort()# 默认从小到大排序
print(A)
A.sort(reverse=True) # 从大到小排序
print(A)
输出
[1, 2, 3, 4, 5]
[5, 4, 3, 2, 1]
6.列表的遍历
namelist = ['xiaoMing','xiaoZhang','xiaoHua']
for name in namelist:
    print(name)
7.列表的切片操作

切片操作(slice)可以从一个列表中获取子列表(列表的一部分)。我们使用一对方括号、起始偏移量start、终止偏移量end 以及可选的步长step 来定义一个分片。切片使用 索引值 来限定范围,从一个大的序列 中切出小的序列。

使用方法: 列表[开始索引:结束索引:步长]

  • 开始索引、 结束索引指定的区间属于左闭右开型 [开始索引, 结束索引),所以不包含索引结束元素。
  • 如果索引从0开始,开始索引数字可以省略,但冒号不能省略。到末尾结束,结束索引数字可以省略,冒号不能省略
  • 正索引从0开始,负索引从-1开始。
testlist = ['a','b','c','d','e']
print(testlist[:])#整个列表
print(testlist[3:])#从testlist[3]到结尾
print(testlist[:3])#从开始到testlist[3]
print(testlist[1:3:1])#从第2个到第3个元素,步长1
print(testlist[:-1])#从开始到倒数第2个元素
print(testlist[-2:])#从倒数第2个元素到结尾
print(testlist[::-1])#列表逆序
输出
['a', 'b', 'c', 'd', 'e']
['d', 'e']
['a', 'b', 'c']
['b', 'c']
['a', 'b', 'c', 'd']
['d', 'e']
['e', 'd', 'c', 'b', 'a']

Python字符串操作大全

Python中字符串的定义:由Unicode码点组成的不可变序列(Strings are immutable sequences of Unicode code points)。

Python内置函数提供了强大的字符串的使用方法,熟练掌握常见的方法,对于数据处理、面试、笔试都非常有用。

dir(str)['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__','__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

首先,字符串是一种序列,所以支持切片和索引操作,具体可以看这篇文章Python基础之数据类型详解
下面是常见的内建函数用法总结

image-20210613183225240

s="hello testers !"
print(s.replace('hello','hi')) #输出hi testers !

image-20210613183201353

s="hello testers !"
print(s.split()) #输出['hello', 'testers', '!']
print(s.partition('testers')) #输出('hello ', 'testers', ' !')

image-20210613183143859

s=" hellotesters! "print(s.strip()) #输出hellotesters!
print(s.rstrip()) #输出 hellotesters!
print(s.lstrip()) #输出hellotesters!

image-20210613183125521

s1="hellotesters!"
s2="HELLO TESTERS!"
s3="Hello Testers!"
s4=s1="hello testers!"
print(s1.upper()) #输出HELLO TESTERS!
print(s2.lower()) #输出hello testers!
print(s3.swapcase()) #输出hELLO tESTERS!
print(s1.capitalize()) #输出Hello testers!
print(s4.title()) #输出Hello Testers!

image-20210613183108216

s1="hello testers!"
print(s1.count('l')) #输出2
print(s1.find('hello')) #输出0
print(s1.rfind('testers!')) #输出6

image-20210613183046619

s1="hellotesters!1234567890"
s2="hellotesters"
s3="1234567890"
s4="HELLOTESTERS"
print(s1.isalnum()) #输出False
print(s2.isalpha()) #输出True
print(s3.isdigit()) #输出True
print(s4.isupper()) #输出True
print(s2.islower()) #输出True
原创内容,禁止转载
程序员知识精选 » Python字典、列表、字符串操作全总结