name = ['wuchao','jinxing','xiaohu','sanpang','ligang']
#用中括号括起来的是列表,可以增删改查。
#列表的元素索引是从0开始的 0 1 2 3 ..
#查
print(name[3]) #中括号里的是元素的位置
print(name[1:3]) #取左不取右
print(name[-1]) #取最后一个
print(name[1:-1])
print(name[1:-1:1]) #从左到右一个一个去取 最后一个1是步长
name2 = name[:] #切name列表的全部元素
print(name2) #此时name2和name一样
#增
name.append('tianxi') #增加的元素在列表的最末尾
name.insert(1,'tianxi') #1就是将新元素插入的索引值
#改
name[1] = 'tiantian' #切片到要更换元素的位置,直接赋值
name[1:3] = ['tiantian','shiwei'] #多个元素时,需要赋值给列表
#删
name.remove('jinxing') #直接删除元素,
name.pop(1)
name3 = name.pop(1) #通过索引删除,并打印出所删除的元素
name.clear() #清空该列表所有元素
del name[0] #可以删除任意元素和列表(列表直接删除并不是清空列表)
#其他操作
['wuchao','jinxing','xiaohu','sanpang','ligang'].count('xiaohu')
#计算元素出现在列表的次数
a = [1,2,3]
b = [4,5,6]
a.extend(b) #把列表b放到列表a,b并没有变化
c = name.index('xiaohu')
print(c) #找到元素在列表中的索引
name.reverse()
print(name) #将列表中元素位置倒过来
x = [4,5,6,8,1,2,9]
x.sort() #将列表中的数字进行排序
x.sort(reverse=True) #列表中的元素排序后再倒过来
print(x)#[1,2,4,5,6,8,9]
#身份判断
type(name) is list #判断name是否是一个列表,list是列表的意思
#元组 typle
#元组可以理解为只读列表,不同的是[]改为()
#创建元组是,只有一个元素时,在元素后边加 ,
name = ('wuchao','jinxing','xiaohu','sanpang','ligang')
print(name[1:3]) #和列表读取一样
#集合 把不同的元素组成在一起 集合中的元素都是不可变得,而且无序
#可哈希 = 不可变类型
#set(可变集合) frozenset(不可变集合)
# s = set('abcl li')
# s1 = ['li','lin','li']
# print(set(s1))
# print(s) #{'b', 'c', 'i', 'a', ' ', 'l'} (去重复)
li = [2,3,'lin']
s = set(li)
# print(2 in s) #True
# print('li' in s) #False
# s.add('uu')
# print(s) # {2, 3, 'uu', 'lin'}
# s.update('ops')
# print(s) # {2, 3, 'lin', 's', 'p', 'o', 'uu'}
s.update([12,'eee']) # {'eee', 2, 3, 12, 'lin'}
print(s)
a = set([1,2,3,4,5])
b = set([4,5,6,7,8])
print(a.intersection(b)) #{4, 5} intersection交集
print(a.union(b)) #{1, 2, 3, 4, 5, 6, 7, 8} union 并集
print(a.difference(b)) #{1, 2, 3} ifference 差集 in a not in b
print(a.symmetric_difference(b)) #{1, 2, 3, 6, 7, 8} symmetric_difference 对称差集
print(a | b) #{1, 2, 3, 4, 5, 6, 7, 8}
print(a-b) #{1, 2, 3}
print(b-a) #{8, 6, 7}
print(a^b) #{1, 2, 3, 6, 7, 8}
print(a&b) #{4, 5}
print(a.issuperset(b)) #False 判断 a>b
print(a.issubset(b)) #False 判断 a<b
#字符串 string
a = "Let's go"
print(a)
print('lilinpei'[3:]) #切片和列表相同
print('li' in 'lilinpei') #True 判断字符串是否在字符串里
print('linpei is a good teacher')
print('%s is a good teacher'%'linpei')
#%s 可替换的字符串(多个字符串用,隔开) %d 可替换的整形
#字符串拼接
a = '123'
b = 'abc'
c = '---'.join([a,b]) #通过‘---’把拼接的字符串拼接起来,可以为空字符串
#[a,b]可以,(a,b)也可以
#字符串内置方法
#重要的
st = 'hello kitty {name} is {age}'
print(st.count('l')) #查询字符串中'l'的个数
print(st.startswith('he')) #判断某个内容是否是开始,True或False
print('abc'.center(20,'-')) #--------abc---------,字符串居中,用-填充
print(st.find('t')) #寻找内容在字符串中的索引位置,将索引值返回
print(st.format(name = 'linpei',age = 24)) #(格式化输出的另
一种方式)在字符串中添加变量,可赋值
print(' My name\n'.strip()) #My name
#print('ok') #把开始和结尾的空格和换行符去掉 ok
print('My name'.replace('n','f',1)) #My fame,替换内容,1为替换次数
print('My name is linpei'.split(' ')) #把字符串用空格(内容)分成列表
#['My', 'name', 'is', 'linpei']
print('abc'.islower()) #判断字符串是否都是小写
print('ABC'.isupper()) #判断字符串是否都是大写
#只用知道就行
print(st.capitalize()) #首字母进行大写
print(st.endswith('y')) #判断某个内容是否是结尾,True或False
print(st.expandtabs())
print(st.format_map({'name':'linpei','age':24})) #同上
print(st.index('t')) #同find形同,找不到该内容后回报错
print('154651sd'.isalnum()) #判断是否只包含字母或数字
print('2100'.isdecimal()) #判断字符串是否是10进制
print('123'.isdigit()) #判断是否是一个整形(整数)
print('123.13'.isnumeric()) #同上
print('45abc'.isidentifier()) #判断是否是一个非法变量(不能以数字开头)
print(' '.isspace()) #判断是否是空格
print('My Name Is Linpei'.istitle()) #判断字符串中每个单词首字母是否全是大写
print('ABC'.lower()) #所有大写变小写
print('abc'.upper()) #所有小写变大写
print('Abc'.swapcase()) #大写变小写,小写变大写
print('abc'.ljust(10,'-')) # abc-------
print('abc'.rjust(10,'-')) #-------abc
print(' My name\n'.lstrip()) #只把左边的空格和换行符去掉
print(' My name\n'.rstrip()) #只把右边的空格和换行符去掉
print('My namengr'.rfind('n')) #从右往左数第一个内容的真实索引值
print('My namengr'.lfind('n')) #从左往右数第一个内容的真实索引值
print('My name is linpei'.split('i'))
print('My name is linpei'.rsplit('n',2)) #从右到左以第n个内容为分割,n=1
print('My name is linpei'.title()) #将所有单词的首字母大写
dic两种创建方式
dic = {'name':'linpei','age':24,'hight':170,'hobby':'girl'}
dic1 = dict((('name','linpei'),('age',24)))
print(dic)
print(dic['name']) #通过键来取出
#字典里可以是任何类型
#'name':'linpei',,,,name叫做键,是一定只能为不可变类型,'linpei'为值
#不可变类型:整形,字符串,元组
#可变类型:列表,字典
#增
dic['red'] = 'what' #增加一个键值对
dic.seteefault('when',57) #如果键相同,则添加不成功
ret = dic.seteefault('age',58)
print(ret) #键相同,则返回字典中的值
#增加的键字典中不存在时,返回新加的值
#查 通过键来查找值
print(dic['name']) #查找键对应的值
print(dic.keys()) #查字典中所有的键
print(dic.values()) #查字典中所有的值
print(dic.items()) #取字典中所有的键值对
#改
dic['age'] = 55 #更改age
dic.update(dic1) #将dic1增加到dic,dic1不变,如果dic1中存在dic中的键,将会覆盖
#删
del dic['name'] #删除整个键值对
dic.clear() #清空字典
dic.pop('age') #删除键值对后输出删除的值
dic.popitem() #随机删除一组键值对,并以元组方式返还值
#其他操作字典的方法
dic = dict.fromkeys(['host1','host2','host3'],['test1','test2'])
print(dic) #dic = {'host1': ['test1', 'test2'], 'host3': ['test1', 'test2'], 'host2': ['test1', 'test2']}
dic['host2'][1] = 'test3'
print(dic) #{'host2': ['test1', 'test3'], 'host1': ['test1', 'test3'], 'host3': ['test1', 'test3']}
#字典嵌套
av_catalog = ["欧美"][""][1] = "质量很好"
#字典排序
print(sorted(dic)) #对键排序,打印键
print(sorted(dic.values())) #对值排序,打印值 数字和字符串不能比较
print(sorted(dic.items())) #对键排序,打印键值对
#字典的遍历
dic = {'name':'linpei','age':24}
for i in dic: #age 24 name linpei 效率高
print(i,dic[i])
for i,v in dic.items():
print(i,v) #age 24 name linpei 效率低