#5个常用的序列结构:列表,元组,字典,字符串,集合
#序列包含操作:双向索引、比较大小、计算长度、元素访问、切片、成员函数
#生成器对象和range、map、enumerate、filter、zip等对象也类似于序列#列表list:可变,有序,可访问可修改
#列表创建:①“=”赋值,②list()函数将其他转换为列表
#列表元素访问:可以使用整数(负整数)作为下标来访问其中的元素,即双向索引。
#返回元素的索引通常结合enumerate
#列表常用方法:10个方法,3增3删2排序,count,index,3个运算符
#append(),insert(),extend()向列表添加元素
a = [1, 2, 3]
a.append(4)          #在尾部追加元素
a.insert(0,0)        #在指定位置插入元素
a.extend([5, 6, 7])  #在尾部追加多个元素#pop(),remove(),clear()用于删除列表中的元素,也可用del删除指定位置的元素
b = [1,2,3,4,5,6,7]
print(b.pop(2))             #删除并返回指定位置的元素
print(b)
b.remove(2)                 #删除第一个值与指定值相等的元素
del b[3]                    #用del删除指定元素
b.clear()                   #删除所有元素#count(),index()
c = [1,2,3,4,3,1,2,3]
print(c.count(3))           #返回列表中指定元素出现的次数
print(c.index(2))           #返回列表中指定元素在列表中首次出现的位置#sort(),reverse(),注意:这两个方法无返回值,原列表不存在,而内置函数sorted()和reversed()有返回值,可使得原列表存在
d = [0,3,4,2,1,6,8,7,10,9,5]
d.sort()                    #按指定方法进行排序
d.reverse()                 #将列表所有元素逆序或翻转#列表支持3个运算符,+,*,in
e = [1,2,3]
f = e + [4]
g = e * 2
h = 3 in e#元组tuple(轻量级列表):不可变,有序,可访问不可修改
#创建元组:①“=”赋值,②tuple()函数将其他转换为列表 注意:元组中只有一个元素,必须加一个逗号
i = (3,)
j = tuple('12345')#元组支持3个运算符,+,*,in
e = (1,2,3)
f = e + [4]
g = e * 2
h = 3 in e#字典dict:可变,无序,每个元素由键和值构成,字典中的键不允许重复,值可以重复
#创建字典:①“=”赋值,②dict()函数将其他转换为字典
seasons = {'春':0, '夏':1, '秋':2, '冬':3}
keys = ['a', 'b', 'c', 'd']
values = [1, 2, 3, 4]
dictionary = dict(zip(keys, values))##常用
print(dictionary)
dd = dict(name='Dong',age=39)
print(dd)#访问字典(取值),查找元素:①使用键作为下标访问 ②使用get方法来返回指定键的对应的值
                           #③使用setdefault返回指定键对应的值,如果不存在就添加
                           #④遍历访问 1直接遍历只访问键 2使用items方法可访问元素
aDict = {'age':39, 'score':[98,97], 'name':'Dong', 'sex':'male'}
print(aDict['age'])
print(aDict.get('sex'))
print(aDict.setdefault('sex'))
for item in aDict:
    print(item)
for item in aDict.items():
    print(item)#增改字典:①使用键作为下标增改元素 ②使用update方法将另一个字典的“键:值”一次性全部倒入当前字典
           #③使用setdefault方法为字典添加新元素
aDictt = {'age':39, 'score':[98,97], 'name':'Dong', 'sex':'male'}
aDictt['age'] = 35
print(aDictt)
aDictt.update({'a':97, 'age':'45'})
print(aDictt)#删除字典:①使用pop和pipitem方法弹出并删除指定元素 ②使用del命令
aDicttt = {'age': 39, 'score': [98, 97], 'name': 'Dong', 'sex': 'male'}
aDicttt.popitem()
print(aDicttt)
aDicttt.pop('age')
print(aDicttt)#集合set:无序,可变,每个元素都是唯一的,元素之间不允许重复
#创建集合:①“=”赋值,②set()函数将其他转换为集合
a = {3, 5}
a_set = set(range(1,10))#增加元素:①使用add方法 ②使用update方法
s = {1, 2, 3}
s.add(4)
print(s)
s.update({5, 6})
print(s)#删除元素:①使用pop方法随机删除并且返回一个元素 ②使用remove方法删除指定元素,不存在就报错
           #③使用discard方法删除指定元素,不存在就忽略 ④使用clear方法清空集合所有元素
ss = {1, 2, 3, 4, 5, 6}
ss.pop()
ss.discard(1)
ss.remove(4)
ss.clear()#集合运算:①内置函数 ②交集、并集、差集运算
c_set = set([1,2,3,4])
d_set = {4, 5, 6, 7, 8}
print(c_set & d_set)
print(c_set | d_set)
print(c_set - d_set)#字符串:不可变,有序
#转义字符:指在字符串中某些特定的符号前加一个斜线之后,该字符将被解释为另外一种含义,不再表示本来的字符
#常用转义字符:\b \f \n \r \t \v \\ \' \'' \ooo \xhh \uhhhh
#为了避免对字符串中的转义字符进行转义,可以使用原始字符串,在字符串前面加上字母r或者R表示原始字符
path = 'C:\Windows\notepad.exe'
print(path)
path_2 = r'C:\Windows\notepad.exe'
print(path_2)#使用.format进行字符串格式化
#b c d o x X e f %
print('{0:.4f}'.format(1/3))
print('{0:%}'.format(1/3))
print('The accuracy is {0:.3f}'.format(4/5))#字符串常用方法,35个
#count方法返回字符串在当前字符串中出现的次数
s = "apple,peach,banana,peach,pear"
print(s.count("peach"))#find方法查找某个字符串在当前字符串指定范围内首次出现的位置,如果不存在返回-1
#rfind方法查找某个字符串在当前字符串指定范围内最后一次出现的位置,如果不存在返回-1
#index方法查找某个字符串在当前字符串指定范围内首次出现的位置,如果不存在抛出异常
#rindex方法查找某个字符串在当前字符串指定范围内最后一次出现的位置,如果不存在抛出异常
print(s.find("peach"))
print(s.rfind("peach"))
print(s.index("peach"))
print(s.rindex("peach"))
print(s.count("peach"))#split()从左往右分割字符串并存入列表,可以指定最大分割次数
#rsplit()从右往左分割字符串并存入列表,可以指定最大分割次数
#partition()从左往右依据指定字符将字符串分为3段
#rpartition()从右往左依据指定字符将字符串分为3段
print(s.split(','))
print(s.rsplit(','))
print(s.partition('peach'))
print(s.rpartition('peach'))#join()方法将列表或其他可迭代对象中多个字符串进行拼接,并在相邻两个字符串之间插入指定字符,返回新字符串。
li = ["apple","peach","banana","pear"]
sep = '-'
s = sep.join(li)
print(s)#lower(),upper(),capitalize(),title(),swapcase()用来讲字符串进行大小写转换
#strip(),rstrip(),lstrip()分别用来删除两端、右端或左端连续的空白字符
ss = "a00000a0000a"
print(ss.strip("a"))
print(ss.rstrip("a"))
print(ss.lstrip("a"))#startwith(),endwith()用来判断字符串是否以指定字符串开始或结束。
sss = "aaabbbbbsddddsss"
print(sss.startswith("aa"))
print(sss.endswith("sss"))#字符串支持的运算符
'+','*','[]','[:]','in','not in','%'