首页 > 代码库 > Python基础2 字符串、列表、字典、集合等操作

Python基础2 字符串、列表、字典、集合等操作

列表、元祖操作

列表

语法:

 name = [jack, tom, bob] 

列表切片

列表切片的特点是“顾头不顾尾”

>>> name = [jack, tom, bob]
>>> name[:]
[jack, tom, bob]
>>> name[1:]
[tom, bob]
>>> name[1:2]
[tom]
>>> name[:-1]
[jack, tom]
>>> name[::2]
[jack, bob]
>>> name[0::2]
[jack, bob]
>>> name[1::2]
[tom]

追加

>>> name
[jack, tom, bob]
>>> name.append(ann)
>>> name
[jack, tom, bob, ann]

插入

>>> name
[jack, tom, bob, ann]
>>> name.insert(0, alex)
>>> name
[alex, jack, tom, bob, ann]

修改

>>> name
[alex, jack, tom, bob, ann]
>>> name[0] = xiaoming
>>> name
[xiaoming, jack, tom, bob, ann]

删除

# pop删除,以索引删,默认不填写索引删除列表最后一个元素
>>> name
[xiaoming, jack, tom, bob, ann]
>>> name.pop()
ann
>>> name
[xiaoming, jack, tom, bob]
>>> name.pop(-1)
bob
>>> name.pop(0)
xiaoming
>>> name
[jack, tom]

# remove删除,以字符串删
>>> name.remove(tom)
>>> name
[jack]

# del删除
>>> name
[jack]
>>> del name[0]
>>> name
[]

扩展

>>> l1 = [1,2,3]
>>> l2 = [4,5]
>>> l1.extend(l2)
>>> l1
[1, 2, 3, 4, 5]

拷贝

>>> l2 = l1.copy()
>>> l2
[1, 2, 3, 4, 5]

统计

>>> l1
[1, 2, 3, 4, 5]
>>> l1.count(1)
1

排序和反转

# 排序,Python3中不同数据类型不能一起排序
>>> l = [3,2,1,4,7,0]
>>> l.sort()
>>> l
[0, 1, 2, 3, 4, 7]

# 反转
>>> l
[0, 1, 2, 3, 4, 7]
>>> l.reverse()
>>> l
[7, 4, 3, 2, 1, 0]

获取索引

>>> l
[7, 4, 3, 2, 1, 0]
>>> l.index(3)
2

元祖

元祖又称为可读的列表,一但创建不能修改,它只有2个方法,一个是count,一个是index

语法:

 name = (jack, tom) 


字符串操作

特性不可修改

print(name.capitalize())        # 首字母大写
print(name.count("a"))          # 计算某个字符在字符串中出现的次数
print(name.center(50, "-"))     # 居中打印
print(name.encode(utf-8))     # 字符串转换成bytes类型
print(name.endswith("en"))      # 判断字符串以什么结尾
print(name.expandtabs())        # 将tab转多少个空格
print(name.find(c))           # 从左侧查找索引
print(name.rfind(c))           # 从右侧查找索引
print("abc123".isalnum())       # 是否为数字和字母
print("abc".isalpha())          # 是否为数字
print("1".isdecimal())          # 是否为十进制
print("123".isdigit())          # 是否为整数
print("12a".isidentifier())     # 是否为合法的变量名
print("abc".islower())          # 是否为小写
print("abc".isupper())          # 是否为大写
print("123".isnumeric())        # 是否只有数字
print(" ".isspace())            # 是否为空格
print("My Name Is".istitle())   # 是否每个首字母都大写
print("My Name Is".isprintable())   # 是否能打印
print("+".join("abc"))          # 拼接字符串
print(name.ljust(50, "*"))      # 长度不到50,后面用*号补齐
print(name.rjust(50, "*"))      # 长度不到50,前面用*号补齐
print("ALEX".lower())           # 变小写
print("alex".upper())           # 变大写
print(" jack  ".lstrip())       # 去掉开头空格
print(" jack  ".rstrip())       # 去掉结尾空格
print(" jack  ".strip())        # 去掉开头和结尾空格
print("jaaaiachen".replace("a", "x", 1))   # 字符串替换
print("abcde".split("a"))       # 分割成列表
print("1+2\n+3+4".splitlines()) # 以换行符分割成列表
print("Jack".swapcase())        # 反转大小写
print("abc".title())            # 变成一个title
print("abc".zfill(50))          # 不够前面补零

字典操作

字典一种key - value 的数据类型,使用就像我们上学用的字典,通过笔划、字母来查对应页的详细内容。

语法:

d = {
    k1: v1,
    k2: v2,
}

字典的特性:

dict是无序的

key必须是唯一的,so 天生去重

增加

>>> d = {k1: v1, k2: v2}
>>> d
{k2: v2, k1: v1}
>>> d[k3] = v3
>>> d
{k3: v3, k2: v2, k1: v1}

修改

>>> d
{k3: v3, k2: v2, k1: v1}
>>> d[k1] = v11111
>>> d
{k3: v3, k2: v2, k1: v11111}

删除

# pop删除
>>> d
{k3: v3, k2: v2, k1: v11111}
>>> d.pop(k3)
v3
>>> d
{k2: v2, k1: v11111}

# del删除
>>> d
{k3: v3, k2: v2, k1: v11111}
>>> del d[k3]
>>> d
{k2: v2, k1: v11111}

# 随机删除
>>> d
{k2: v2, k1: v11111}
>>> d.popitem()
(k2, v2)
>>> d
{k1: v11111}

查找

>>> d
{k3: v3, k2: v2, k1: v1}

# 查看k1是否在字典d中,存在为True,不存在为False
>>> k1 in d
True

# get方式取k1如果有则取到值,没有则设置为None
>>> d.get(k1, None)
v1
>>> d.get(xxx, None)

# 直接取值,k1不存在则报错
>>> d[k1]
v1

其他

>>> d
{k3: v3, k2: v2, k1: v1}
>>> d.keys()
dict_keys([k3, k2, k1])
>>> d.values()
dict_values([v3, v2, v1])
>>> d.items()
dict_items([(k3, v3), (k2, v2), (k1, v1)])

# 循环字典方式1
for k in d:
    print(k, d[k])

# 循环字典方式2
for k, v in d.items():
    print(k, v)

# 方式1好于方式2,原因一目了然,上面的d.items()是将字典先转换为列表,这样如果字典较大的话,会很慢

集合操作

集合是一个无序的,不重复的数据组合,它的主要作用如下:

去重,把一个列表变成集合,就自动去重了

关系测试,测试两组数据之前的交集、差集、并集等关系

list_1 = [1,4,5,7,3,6,7,9]
list_1 = set(list_1)
 
list_2 = set([2,6,0,66,22,8,4])
print (list_1,list_2)
‘‘‘
#求交集
print (list_1.intersection(list_2))
#求并集
print (list_1.union(list_2))
#求差集,1里面有2里面没有
print (list_1.difference(list_2))
#求子集,1是2的子集
print (list_1.issubset(list_2))
#求父集,1是2的父集
print (list_1.issuperset(list_2))
#求对称差集,两个互相没有的,去掉重复的
print (list_1.symmetric_difference(list_2))
#判断是否有交集,有为false,无为true
print (list_1.isdisjoint(list_2))
‘‘‘
 
#交集
print (list_1 & list_2)
#并集
print (list_1 | list_2)
#差集
print (list_1 - list_2)
#对称差集
print (list_1 ^ list_2)
 
#添加
list_1.add(999)
list_1.update([222,223,224])
#删除
list_1.remove(999)  #不存在报错
list_1.discard(888) #不存在不报错
#长度
len(list_1)
#测试x是否是a的成员
999 in list_1
#测试x是否不是a的成员
999 not in list_1

 

Python基础2 字符串、列表、字典、集合等操作