一、list--列表

Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。

比如,列出班里所有同学的名字,就可以用一个list表示:

 首先说明一个函数的用法:enumerate

 

 

 enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

 此函数可获取到list中下标及对应下标的内容:

 list_w = '123,456,789'

 for i,x in enumerate(list_w):

 print(i,x)

 

 也可以这样使用:

 res = list(enumerate(list_w))

 print(res)

 

 

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

>>> classmates = ['Michael', 'Bob', 'Tracy']
>>> classmates
['Michael', 'Bob', 'Tracy']

#查看list的长度:len
len(classmates)
3
用索引来访问list中每一个位置的元素,记得索引是从0开始的:
>>> classmates[0]
'Michael'
>>> classmates[1]
'Bob'
>>> classmates[2]
'Tracy'
>>> classmates[3]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

#当超出长度则会报错
找最后一位可以用索引-1来查找:
classmates[-1]

#添加元素有两种:1.append 2.insert
1.classmates.append('lcs') #在末尾添加
2.classmates.insert(1,'lcs') #第一个是添加的位置,第二个则是添加的内容

#要删除list末尾的元素,用pop()方法:
classmates.pop()
#指定删除则在pop中写入需要删除的位置
classmates.pop(1) #删除lcs

#要把某个元素替换成别的元素,可以直接赋值给对应的索引位置:
>>> classmates[1] = 'Sarah'
>>> classmates
['Michael', 'Sarah', 'Tracy']


#list里面的元素的数据类型也可以不同,比如:
>>> L = ['Apple', 123, True,['lcs','liu']]
#如果一个list中一个元素也没有,就是一个空的list,它的长度为0:
l = []
len(l)

二、tuple--元祖:

 tuple和list非常类似,但是tuple一旦初始化就不能修改,比如同样是列出同学的名字:

classmates = ('Michael', 'Bob', 'Tracy')
此时定义好classmates后则不能改变里面的元素

除了不能改变已定义的tuple,其他的操作与list一样,如:len,下标取值等


#注意:可‘改变’的tuple:
classmates = ('lcs','liu','aaa',[111,222,'hahaha'],{'sex':'男'})
当元祖包含list,dict时,虽然元祖中的元素不能修改,但元祖中的list和dict可以修改,修改方式与之前的一样
classmates[3].append('asd')
classmates[4].setdefault('age','永远的18岁')
print(classmates)

 

 


#最后在插一个set 集合:
# 1、天生去重、循环

# 2 关系测试 -交集,差集,并集,(反向差集,对称差集)

list = [1,2,3,4,5,3,6]
list_2 =[2,3,5,7,8]
list=set(list)
list_2 = set(list_2)
print(list.intersection(list_2),'交集 ') #交集 取出重复数据
print(list.union(list_2),'并集') # 并集 去重-统一展示
print(list.difference(list_2),'差集') #差集-取出list中有 list_2 没有
list_3 = set([1,3,6])
print(list_3.issubset(list)) #子集 list_3 的值在list 全有
print(list.issuperset(list_3)) #父集
print(list.symmetric_difference(list_2)) # 对称差集 lsit 和 list_3 互相没有的

print('-----------------')
print(list & list_2) #交集
print(list | list_2) # 并集
print(list -list_2) #差集
print(list ^ list_2) # 对称差集

print('---------集合操作--------')
list.add(777) #一次添加一个
print(list)
list.update([888,999])#同时添加多个
print(list)
list.remove(999)
print(list)
list.pop()
print(list)
list.discard(888) # 删除一个不存在的 不会报错
print(list)

#注: set天生去重,其余的当需要用的时候在查看即可