04 : Python 列表,元组,字典,集合


列表 list
列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作

names = ["4ZhangYang", "#!Guyun","xXiangPeng","jack","ChenRonghua","XuLiangchen"]

print(names[0]) # 取下标0的值
print(names[0],names[2])
print(names[-2:]) # 倒数第二个取到结尾
print(names[1:3])
print(names[0:-1]) # 从下标0取到倒数第二个
print(names[0:]) # 等价print(names[:]) 全部
print(names[0:3]) # 等价print(names[:3]) 开始0取到第三个

print(names[0:-1:2])
print(names[::2]) # 后面的2是代表,每隔一个元素,就取一个

for i in names:
print(i)

#扩展用法:对比a 和 b 的输出结果

a = [1,2,3]
b = a
a[1] = 555
#b = [1,555,3]
print("list_a = ",a)
print("list_b = ",b)

#names = "ZhangYang Guyun Xiangpeng XuLiangChen"
names = ["4ZhangYang", "#!Guyun","xXiangPeng",["alex","jack"],"ChenRonghua","XuLiangchen"]

name2 = copy.deepcopy(names) # 深度copy,完全的把names 复制给name2,修改names对name2无影响。
#name2 = names.copy() # 浅浅copy,只copy第一层,修改names 的第二层元素值,会影响name2 的第二层的值
#name2 = names # 直接复制,修改names,就会影响name2,指向的同一块地址。
print(names)
print(name2)
names[2] = "向鹏"
names[3][0] ="ALEXANDER" # 下标3 也是一个list,取下标3的第0个下标
print(names)
print(name2)

# 列表的 --- 增 -- 删 -- 改 -- 查

names.append("LeiHaidong")
names.insert(1,"ChenRonghua")
names.insert(3,"Xinzhiyu")
names[2] ="XieDi"

#delete
names.remove("ChenRonghua")
del names[1] # 等价 names.pop(1)
del names #删除names, 就是不存在了,如果在使用print(names)打印就会报错
print(names)
print(names.index("XieDi"))
print( names[names.index("XieDi")] )

print(names.count("ChenRonghua"))
names.clear() # 清空names里面的元素,注意区别和del names 的区别
names.reverse()
names.sort()
print(names)

names2 = [1,2,3,4]
names.extend(names2)
print(names,names2)


#循环输出列表内容,在结尾添加指定的内容
names2 = [1,2,3,4]
for x in names2:
print(x," ")
print(" ")
for x in [1, 2, 3]:
print(x, end="1") # 输出的内容结尾添加1

###################################################################################################################
字符串   

name = "WOSHISHUI"
name.capitalize() # 首字母大写,其它字母全部变小写
name.casefold() # 大写全部变小写
name.center(50,"-") # 输出 '---------------------WOSHISHUI----------------------'
name.count('SHI') # 统计 SHI出现次数
name.encode() # 将字符串编码成bytes格式
name.endswith("Li") # 判断字符串是否以 Li结尾
print("woshi shui".expandtabs(10)) # 输出'woshi shui', 将 转换成多长的空格
print(name.find('A')) # 查找A,找到返回其索引, 找不到返回-1

#####################################################################################################################
元组     
#Python 的元组与列表类似,不同之处在于元组的元素不能修改。
#元组使用小括号,列表使用方括号。
#元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

tup1 = ("Google", "Runoob", 1997, 2000)
tup2 = (1, 2, 3, 4, 5, 6, 7)
print("tup1[0]: ", tup1[0])
print("tup2[1:5]: ", tup2[1:5])

# 以下修改元组元素操作是非法的。
# tup1[0] = 100

# 创建一个新的元组
tup3 = tup1 + tup2;
print(tup3)
print(len(tup3)) # 输出元组元素个数

#删除元组 - 不能删除指定的下标,只能整个删除
del tup1
print ("删除后的元组 tup : ")
#print (tup1)

#------- 元素函数 -----------------
tuple1 = ('Google', 'Runoob', 'Taobao') # 计算元组元素个数。
print(len(tuple1))

tuple1 = ('5', '4', '9') # 返回元组中元素最大值。
print(max(tuple1))

tuple1 = ('5', '4', '9') # 返回元组中元素最小值。
print(min(tuple1))

list1= ['Google', 'Taobao', 'Runoob', 'Baidu'] # 将列表转换为元组。
tuple1=tuple(list1)
print(tuple1)
#####################################################################################################################
字典 
#字典是另一种可变容器模型,且可存储任意类型对象。
#字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:
#d = {key1 : value1, key2 : value2 }

dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
print("dict['Name']: ", dict['Name'])
print("dict['Age']: ", dict['Age'])

#------ 修改字典元素
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
dict['Name'] = "test" # 添加信息
dict['Age'] = 8 # 更新 Age

print("dict['Name']: ", dict['Name'])
print("dict['Age']: ", dict['Age'])

# ----- 删除字典元素
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}

del dict['Name'] # 删除键 'Name'
print(dict)
dict.clear() # 清空字典
print(dict)
del dict # 删除字典
print(dict["Name"])

# ------字典函数
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
len(dict) #计算字典元素个数,即键的总数。
str(dict) #输出字典,以可打印的字符串表示。
type(dict) #返回输入的变量类型,如果变量是字典就返回字典类型。

1 radiansdict.clear()
删除字典内所有元素
2 radiansdict.copy()
返回一个字典的浅复制
3 radiansdict.fromkeys()
创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
4 radiansdict.get(key, default=None)
返回指定键的值,如果值不在字典中返回default值
5 key in dict
如果键在字典dict里返回true,否则返回false
6 radiansdict.items()
以列表返回可遍历的(键, 值) 元组数组
7 radiansdict.keys()
返回一个迭代器,可以使用 list() 来转换为列表
8 radiansdict.setdefault(key, default=None)
和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
9 radiansdict.update(dict2)
把字典dict2的键/值对更新到dict里
10 radiansdict.values()
返回一个迭代器,可以使用 list() 来转换为列表
11 pop(key[,default])
删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
12 popitem()
随机返回并删除字典中的最后一对键和值。
#####################################################################################################################
集合 
#集合(set)是一个无序的不重复元素序列。
#可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
#它的主要作用如下:
#去重,把一个列表变成集合,就自动去重了
#关系测试,测试两组数据之前的交集、差集、并集等关系

basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
print(basket) ##这里演示的是去重功能,只会输出没有重复的元素
#print("orange" in basket) # 判断元素是否在集合内 返回true 、 false

#s = set([3,5,9,10]) # 创建一个数值集合
#s = set((3,5,9,10)) # 创建一个数值集合
s = set({3,5,9,10}) # 创建一个数值集合
print(s)

t = set("Hello") # 创建一个唯一字符的集合
print(t)
print(type(t))
a = t | s # t 和 s的并集
print("a = ",a)
b = t & s # t 和 s的交集
print("b = ",b)
c = t - s # 求差集(项在t中,但不在s中)
print("c = ",c)
d = t ^ s # 对称差集(项在t或s中,但不会同时出现在二者中)
print("d = ",d)

s.add(1) # 添加一个元素
print(s)
s.update([1,2,'3xx']) # 添加多个元素
print(s)
#s.remove("10sdsd") # 移除一个元素,不存在会发生报错
print(s)
s.discard("xxxx") # 移除一个元素,不存在不会报错
print(s)
s.pop() # 随机 移除一个元素
print(s)
print(len(s)) # 输出 集合元素个数
s.clear() # 清空
print(s)
s.copy() # 浅复制

print( "x" in s) # 查找x 是否在s 集合里面,存在返回ture
print( "x" not in s) # 查找x 不在s 集合里面,不在返回true

##### 内置函数: ########
add() 为集合添加元素
clear() 移除集合中的所有元素
copy() 拷贝一个集合
difference() 返回多个集合的差集
difference_update() 移除集合中的元素,该元素在指定的集合也存在。
discard() 删除集合中指定的元素
intersection() 返回集合的交集
intersection_update() 返回集合的交集。
isdisjoint() 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。
issubset() 判断指定集合是否为该方法参数集合的子集。
issuperset() 判断该方法的参数集合是否为指定集合的子集
pop() 随机移除元素
remove() 移除指定元素
symmetric_difference() 返回两个集合中不重复的元素集合。
symmetric_difference_update() 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。
union() 返回两个集合的并集
update() 给集合添加元素
---
len(s) # set 的长度
x in s # 测试 x 是否是 s 的成员
x not in s # 测试 x 是否不是 s 的成员
s.issubset(t) # s <= t 测试是否 s 中的每一个元素都在 t 中
s.issuperset(t) # s >= t 测试是否 t 中的每一个元素都在 s 中
s.union(t) # s | t 返回一个新的 set 包含 s 和 t 中的每一个元素
s.intersection(t) # s & t 返回一个新的 set 包含 s 和 t 中的公共元素
s.difference(t) # s - t 返回一个新的 set 包含 s 中有但是 t 中没有的元素
s.symmetric_difference(t) # s ^ t 返回一个新的 set 包含 s 和 t 中不重复的元素
s.copy() # 返回 set “s”的一个浅复制



原文地址:https://www.cnblogs.com/jim-xu/p/11687181.html