新的数据的类型的介绍:元组(tuple),字典(dictionary)
元组特点,只可以读,不能修改。
创建方法:
a = (1, 2, 3, 4) print(a[1:3]) # 通过切片 print(a[1]) # 元组只可读,不能修改
字典:可以说是python中非常重要的数据类型,主要由键值构成。 字典是python中唯一的映射关系,采用键值对(key-value)的形式储存数据。python对key进行 哈希函数运算,根据结果决定value的存储地址,所以字典是无储存的,且key必须是可哈希的。 可哈希表示key必须是不可变类型,如:数字.字符串.元组。可变类型:列表,字典### 所谓不可变类型也就是创建后,在内存中开辟了空间,如果将值重新赋值也就是将它的指向转到另一块内存 id()方法输出它的内存 字典(dictionary)是处列表外python中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的 对象集合。再者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。字典两个特点:无序,键唯一 如果有两个相同的键在一个字典中后面的会顶掉它 创建方法:
可以有两种:
a = [1,2,3]
a = list((1,2,3))
dic = {}
dic = dict((('name', 'alex'),))#里面的括号可以是其他的括号
字典的增删改查操作的举例:
# _author:"Isaac_hu" # data: 2018/2/27 # dic1 = {[1, 2, 3]: 'isaac'} # 这里会出错应为前面的是不能是可变类型 # print(dic1) dic = {'name': 'isaac', 'age': 35, 'hobby': {'girl_name': 'hua', 'age': 15}, 'is_handsome': True, 'school': 'Dong'} print(dic['hobby']) dic = dict((('name', 'alex'),)) print(dic) dic = {'name': 'isaac', 'age': 35, 'hobby': 'girl', 'is_handsome': True, 'school': 'Dong'} print(dic) # 输出后可能是无序的,因为字典是无序的 # 查 通过键查 print(dic['name']) # 通过键取出数据 print(type(dic.keys())) # 类型是dict_key 可以转化通过list函数 print(list(dic.keys())) print(list(dic.values())) # 通过values方法输出它的值 print(list(dic.items())) # 全部输出 # 修改 修改值通过键来找 dic['name'] = 'vic' print(dic) # 还可以同update方法 dic1 = {'1': '111', '2': '2222', '3': '3333'} dic2 = {'4': '111', '5': '2222', '6': '3333'} dic1.update(dic2) print(dic1) print(dic2) # 删 clear del pop dic3 = {'name': 'isaac', 'age': 15} del dic3['name'] print(dic3) # 删除键值对 dic3.clear() # 清空 print(dic3) dic3 = {'name': 'isaac', 'age': 15, 'hobby': 'girl'} print(dic3.pop('age')) # 返回被删除键的值 print(dic3) a = dic3.popitem() # 随机删除一个键值对,并以元组方式返回 print(a, dic3) # 其他操作以及涉及的方法 dic4 = dict.fromkeys(['host', 'host2', 'host3'], 'test') dic4 = dict.fromkeys(['host', 'host2', 'host3'], 'test') print(dic4) # {'host': 'test', 'host2': 'test', 'host3': 'test'} dic4 = dict.fromkeys(['host', 'host2', 'host3'], ['test1', 'test2']) # 排序 dic5 = {5: '55', 2: '222', 4: '444'} print(sorted(dic5)) print(sorted(dic5.values())) print(sorted(dic5.items())) dic3 = {'name': 'isaac', 'age': 15, 'hobby': 'girl'} for i in dic3: print(i) # 这样是打印出键 print(i, dic[i]) # 通过键找值,效率最高 for i, v in dic3.items(): print(i, v) # 这个效率不高
# _author:"Isaac_hu" # data: 2018/2/28 dic = {'name': 'alex'} dic['age'] = 18 print(dic) # 如果有就不修改,没有就添加,有返回值对应键的值 dic.setdefault('age', 34) print(dic)
嵌套,嵌套是python中十分重要的用法,一个对于列表,字典。不断的嵌套能够创建出菜单管理等。能够十分清晰的展现如省县市的下属关系等等。
字符串类型:
是基本也是最关键的一个数据类型,我们的input的函数也就是输入一个字符串。
这里大部分字符串的方法:直接用代码表示了:
# _author:"Isaac_hu" # data: 2018/2/28 a = "let's go" print(a) # 字符串的乘法,用于输出重复的字符 b = 'hello' print(b*10) # 通过索引取字符串,这里和切片操作一致,具体见列表 print('hello world'[2:]) # in判断字符串是否在另一个字符串中 print('ast'in'wast') # %s 格式化字符 name = "isaac" print('isaac is a good student') print("%s is a good student" % name) # 字符串的拼接 + 效率十分低下,会开辟很多内存 a = '123' b = '456' d = '44' # c = a + b # print(c) # join方法 前面是用于拼接的东西 c = '-'.join([a, b, d]) print(c) # string的内置方法 st = 'hello world {name} is {age}' print(st.count('l')) # 计算字符串的某个字符的个数 print(st.capitalize()) # 字符串首字母大写 print(st.center(50, '-')) # 前面的字符的总数,后面的其他的字符,居中 后面必须有东西 print(st.encode()) # 编码---- print(st.endswith('rld')) # 判断以某某结尾,可以加范围 print(st.startswith('he')) # 判断以某某开头,也可以加范围 print(st.expandtabs(tabsize=10)) # 改变tab的大小,本来是4个空格可以改\t print(st.find('t')) # 查找到第一个元素并将索引值返回 print(st.format(name='isaac', age=22)) # 用于格式化输出 待定: ?:{} print(st.format_map({'name': 'isaac', 'age': 22})) # 用于格式化输出 print(st.index('h')) # index和find差不多,但是没有时find会返回-1,index会报错 print('abc456'.isalnum()) # 只要不是特殊字符即返回True print('0010'.isdecimal()) # 判断是不是一个十进制的数 print('123132'.isdigit()) # 判断是否是个数字必须是整数 print('asf'.isalpha()) # 判断一个数字是否是字母 print('15165'.isnumeric()) # 和isdigit类似 print('1sad'.isidentifier()) # 检验是否是不是合法命名标识 print('abc'.islower()) # 判断一个字符串是不是全小写 print('ABC'.isupper()) # 判断一个字符串是不是全大写 print(' '.isspace()) # 判断是否全为空格 print('My Title'.istitle()) # 每个单词,是否首字母大写 print('MY TITLE'.lower()) # 大写变小写 print('my name'.upper()) # 小写变大写 print('My Title'.swapcase()) # 大写变小写,小写变大写 print('asd'.ljust(50, '*')) # 左对齐 print('asd'.rjust(50, '*')) # 右对齐 print(' \t isa ac \n'.strip()) # 去掉前后所有换行符,空格,制表符 print(' \t isa ac \n'.lstrip()) # 去掉前所有换行符,空格,制表符 print(' \t isa ac \n'.rstrip()) # 去掉后所有换行符,空格,制表符 print('My name'.replace('name', 'age')) # 替换所有,后面可以加一个控制替换的次数的参数 print('My title title'.rfind('t')) # 从右边开始找,返回它的索引位置 print('My title title'.split(' ')) # 分割成列表 依据参数,列表组合成string用join print('My title title'.rsplit('i', 1)) # 分割一次,以右为准。 print('my title title'.title()) # 改成标题格式 # 重要的字符串方法 # print(st.count('l')) # print(st.center(50, '-')) # print(st.startswith('he')) # print(st.find('t')) # print(st.format(name='isaac', age=22)) # print('MY TITLE'.lower()) # 大写变小写 # print('my name'.upper()) # 小写变大写 # print(' \t isa ac \n'.strip()) # 去掉前后所有换行符,空格,制表符 # print('My name'.replace('name', 'age')) # 替换所有,后面可以加一个控制替换的次数的参数 # print('My title title'.split(' ')) # 分割成列表 依据参数,列表组合成string用join
这里对应了之前的万恶字符串拼接,引入了一个join方法,是一个十分有用的方法。与split可以说是一个对应的关系啦!