字符串类型
name = 'derek'
print(name.capitalize()) #首字母大写 Derek
print(name.count("e")) #统计字符串出现某个字符的个数 2
print(name.center(10,'*')) #打印30个字符,不够的“*”补齐 **derek***
print(name.endswith('k')) #判断字符串是否以"k"结尾 True
print('244'.isdigit()) #判断字符是否为整数 True
print('+'.join(['1','2','3'])) #把join后的内容加入到前面字符串中,以+为分割符 1+2+3
print('
123'.strip()) #strip去掉换行符
print("1+2+3+4".split("+")) #以+为分隔符生成新的列表,默认不写为空格 ['1', '2', '3', '4']
msg = 'my name is {name} and i am {age} old'
print(msg.format(name='derek',age=20))
my name is derek and i am 20 old
================== 字符串 内置方法 =================================
# string.capitalize() 把字符串的第一个字符大写
# string.center(width) 返回内容是原字符串居中,并使用空格填充至长度为 width 的新字符串
# string.count(str, beg=0, end=len(string)) 返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数
# string.decode(encoding='UTF-8', errors='strict') 以 encoding 指定的编码格式解码 string,如果出错默认报一个 ValueError 的 异 常 , 除 非 errors 指 定 的 是 'ignore' 或 者'replace'
# string.encode(encoding='UTF-8', errors='strict') 以 encoding 指定的编码格式编码 string,如果出错默认报一个ValueError 的异常,除非 errors 指定的是'ignore'或者'replace'
# string.endswith(obj, beg=0, end=len(string)) 检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False.
# string.expandtabs(tabsize=8) 把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8。
# string.find(str, beg=0, end=len(string)) 检测 str 是否包含在 string 中,如果 beg 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回-1
# string.index(str, beg=0, end=len(string)) 跟find()方法一样,只不过如果str不在 string中会报一个异常.
# string.isalnum() 如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False
# string.isalpha() 如果 string 至少有一个字符并且所有字符都是字母则返回 True,否则返回 False
# string.isdecimal() 如果 string 只包含十进制数字则返回 True 否则返回 False.
# string.isdigit() 如果 string 只包含数字则返回 True 否则返回 False.
# string.islower() 如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False
# string.isnumeric() 如果 string 中只包含数字字符,则返回 True,否则返回 False
# string.isspace() 如果 string 中只包含空格,则返回 True,否则返回 False.
# string.istitle() 如果 string 是标题化的(见 title())则返回 True,否则返回 False
# string.isupper() 如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False
# string.join(seq) 以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串
# string.ljust(width) 返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串
# string.lower() 转换 string 中所有大写字符为小写.
# string.lstrip() 截掉 string 左边的空格
# string.maketrans(intab, outtab]) maketrans() 方法用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。
# max(str) 返回字符串 str 中最大的字母。
# min(str) 返回字符串 str 中最小的字母。
# string.partition(str) 有点像 find()和 split()的结合体,从 str 出现的第一个位置起,把 字 符 串 string 分 成 一 个 3 元 素 的 元 组 (string_pre_str,str,string_post_str),如果 string 中不包含str 则 string_pre_str == string.
# string.replace(str1, str2, num=string.count(str1)) 把 string 中的 str1 替换成 str2,如果 num 指定,则替换不超过 num 次.
# string.rfind(str, beg=0,end=len(string) ) 类似于 find()函数,不过是从右边开始查找.
# string.rindex( str, beg=0,end=len(string)) 类似于 index(),不过是从右边开始.
# string.rjust(width) 返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串
# string.rpartition(str) 类似于 partition()函数,不过是从右边开始查找.
# string.rstrip() 删除 string 字符串末尾的空格.
# string.split(str="", num=string.count(str)) 以 str 为分隔符切片 string,如果 num有指定值,则仅分隔 num 个子字符串
# string.splitlines(num=string.count('
')) 按照行分隔,返回一个包含各行作为元素的列表,如果 num 指定则仅切片 num 个行.
# string.startswith(obj, beg=0,end=len(string)) 检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查.
# string.strip([obj]) 在 string 上执行 lstrip()和 rstrip()
# string.swapcase() 翻转 string 中的大小写
# string.title() 返回"标题化"的 string,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle())
# string.translate(str, del="") 根据 str 给出的表(包含 256 个字符)转换 string 的字符,要过滤掉的字符放到 del 参数中
# string.upper() 转换 string 中的小写字母为大写
列表===========================================
import sys
def main():
f = [x for x in range(1, 10)]
print(f)
f = [x + y for x in 'ABCDE' for y in '1234567']
print(f)
# 用列表的生成表达式语法创建列表容器
# 用这种语法创建列表之后元素已经准备就绪所以需要耗费较多的内存空间
f = [x ** 2 for x in range(1, 1000)]
print(sys.getsizeof(f)) # 查看对象占用内存的字节数
print(f)
# 请注意下面的代码创建的不是一个列表而是一个生成器对象
# 通过生成器可以获取到数据但它不占用额外的空间存储数据
# 每次需要数据的时候就通过内部的运算得到数据(需要花费额外的时间)
f = (x ** 2 for x in range(1, 1000))
print(sys.getsizeof(f)) # 相比生成式生成器不占用存储数据的空间
print(f)
for val in f:
print(val)
if __name__ == '__main__':
main()
#创建
fruit = ['apple','pear','grape','orange']
#切片
print(fruit[1]) #pear
print(fruit[1:3]) #['pear', 'grape']
print(fruit[-1]) #orange
print(fruit[:2]) #['apple', 'pear']
# 追加
fruit.append('peach')
print(fruit) #['apple', 'pear', 'grape', 'orange', 'peach']
# 删除
fruit.remove('peach') #删除指定的
print(fruit) #['apple', 'pear', 'grape', 'orange']
fruit.pop() #删除列表最后一个元素
print(fruit) #['apple', 'pear', 'grape']
del fruit[2] #删除指定的索引
print(fruit) #['apple', 'pear']
# 插入
fruit.insert(1,'grape') #把‘grape’加入到索引为1的位置
print(fruit) #['apple', 'grape', 'pear']
# 修改
fruit[2] = 'orange' #直接修改
print(fruit) #['apple', 'grape', 'orange']
# 扩展 fruit1 = ['apple','orange'] fruit2 = ['pear','grape'] fruit1.extend(fruit2) print(fruit1) #['apple', 'orange', 'pear', 'grape'] # 统计 print(fruit1.count('apple')) #1 # 排序 fruit1.sort() print(fruit1) #['apple', 'grape', 'orange', 'pear'] fruit1.reverse() print(fruit1) #['pear', 'orange', 'grape', 'apple'] # 获取下标 print(fruit1.index('apple')) #3 # 同时获取下标和值 for index,item in enumerate(fruit1): print(index,item) # 结果 pear orange grape apple
元组========================================
# 创建元组 fruit = ('apple','orange','grape') # 常用功能 print(fruit.count('apple')) #1 print(fruit.index('orange')) #1
字典
def main(): scores = {'骆昊': 95, '白元芳': 78, '狄仁杰': 82} # 通过键可以获取字典中对应的值 print(scores['骆昊']) print(scores['狄仁杰']) # 对字典进行遍历(遍历的其实是键再通过键取对应的值) for elem in scores: print('%s ---> %d' % (elem, scores[elem])) # 更新字典中的元素 scores['白元芳'] = 65 scores['诸葛王朗'] = 71 scores.update(冷面=67, 方启鹤=85) print(scores) if '武则天' in scores: print(scores['武则天']) print(scores.get('武则天')) # get方法也是通过键获取对应的值但是可以设置默认值 print(scores.get('武则天', 60)) # 删除字典中的元素 print(scores.popitem()) print(scores.popitem()) print(scores.pop('骆昊', 100)) # 清空字典 scores.clear() print(scores) if __name__ == '__main__': main()
# 创建 fruit = {1:'apple',2:'orange',3:'grape'} print(fruit) # 增加 fruit[4] = 'pear' print(fruit) #{1: 'apple', 2: 'orange', 3: 'grape', 4: 'pear'} # 修改 fruit[4] = 'peach' print(fruit) #{1: 'apple', 2: 'orange', 3: 'grape', 4: 'pear'} # 删除 fruit.pop(4) #删除指定的key print(fruit) #{1: 'apple', 2: 'orange', 3: 'grape'} # 查找value print(fruit.get(1)) #apple
fruit = {1:'apple',2:'orange',3:'grape'} # 循环 for k,v in fruit.items(): print(k,v) apple orange grape for k in fruit.keys(): print(k) 2 for v in fruit.values(): print(v) apple orange grape
集合==========================================
def main(): set1 = {1, 2, 3, 3, 3, 2} print(set1) print('Length =', len(set1)) set2 = set(range(1, 10)) print(set2) set1.add(4) set1.add(5) set2.update([11, 12]) print(set1) print(set2) set2.discard(5) # remove的元素如果不存在会引发KeyError if 4 in set2: set2.remove(4) print(set2) # 遍历集合容器 for elem in set2: print(elem ** 2, end=' ') print() # 将元组转换成集合 set3 = set((1, 2, 3, 3, 2, 1)) print(set3.pop()) print(set3) # 集合的交集、并集、差集、对称差运算 print(set1 & set2) # print(set1.intersection(set2)) print(set1 | set2) # print(set1.union(set2)) print(set1 - set2) # print(set1.difference(set2)) print(set1 ^ set2) # print(set1.symmetric_difference(set2)) # 判断子集和超集 print(set2 <= set1) # print(set2.issubset(set1)) print(set3 <= set1) # print(set3.issubset(set1)) print(set1 >= set2) # print(set1.issuperset(set2)) print(set1 >= set3) # print(set1.issuperset(set3)) if __name__ == '__main__': main()
# 创建 fruit = set(['apple','orange','pear']) print(fruit) #{'orange', 'pear', 'apple'} # 添加 fruit.add('grape') #add只能添加一个 print(fruit) #{'apple', 'orange', 'pear', 'grape'} fruit.update(['peach','banana']) #update添加多个 print(fruit) {'banana', 'pear', 'apple', 'peach', 'grape', 'orange'} # 删除 fruit.remove('banana') #删除指定的 print(fruit) fruit.pop() #随机删除 print(fruit)
num1 = set([11,22,33,44]) num2 = set([33,44,55,66]) # 并集 print(num1.union(num2)) #{66, 11, 22, 33, 44, 55} # 差集 print(num1.difference(num2)) #{11, 22} # 交集 print(num1.intersection(num2)) #{33, 44}