域名价值评估,南贤俊快乐大本营,薛海培
列表(list)是python以及其他语言中最常用到的数据结构之一。python使用中括号 [ ] 来解析列表。列表是可变的(mutable)——可以改变列表的内容。
列表是python的序列类型之一,也支持索引、切片等操作。
1 list1 = ['google', 'runoob', 1997, 2000]; 2 list2 = [1, 2, 3, 4, 5 ]; 3 list3 = ["a", "b", "c", "d"];
与字符串的索引一样,列表索引从0开始。列表可以进行截取、组合等。
1 #!/usr/bin/env python 2 # -*-coding:utf-8-*- 3 4 """ 5 @author:fyh 6 @time:2019/5/31 7 """ 8 names = ['张三', "李四", "王五", "赵六"] 9 10 print(names[2]) 11 12 print(names[0:3]) 13 14 print(names[0:7]) 15 16 print(names[-1]) 17 18 print(names[0:3:1]) 19 20 print(names[3:0:-1]) 21 22 print(names[:])
insert 方法用于将对象插入到列表中 append方法则用于在列表末尾追加新的对象 extend 方法可以在列表的末尾一次性追加另一个序列中的多个值。
names_class2.append('aa') names_class2.insert(2,'alvin') print(names_class2) >>> a = [1, 2, 3] >>> b = [4, 5, 6] >>> a.extend(b) >>> a [1, 2, 3, 4, 5, 6]
extend 方法修改了被扩展的列表,而原始的连接操作(+)则不然,它会返回一个全新的列表。
>>> a = [1, 2, 3] >>> b = [4, 5, 6] >>> a.extend(b) >>> a [1, 2, 3, 4, 5, 6] >>> >>> a + b [1, 2, 3, 4, 5, 6, 4, 5, 6] >>> a [1, 2, 3, 4, 5, 6]
names_class2 = ['张三', '李四', '王五', '赵六'] names_class2[3] = '赵七' names_class2[0:2] = ['su', 'alvin'] print(names_class2) # ['su', 'alvin', '王五', '赵七']
1 #!/usr/bin/env python 2 # -*-coding:utf-8-*- 3 4 """ 5 @author:fyh 6 @time:2019/5/31 7 """ 8 names_class2 = ['张三', '李四', '王五', '赵六'] 9 10 # 删除第一个元素del 11 del names_class2[0] 12 13 print(names_class2) # ['李四', '王五', '赵六'] 14 15 # pop 默认删除的是最后一个元素 注意,pop是有一个返回值的,返回的是被删除的内容 16 name2 = names_class2.pop() 17 print(name2) # 赵六 18 print(names_class2) # ['李四', '王五'] 19 20 # remove 需要指定删除的元素 21 names_class2.remove('李四') 22 print(names_class2) 23 24 # clear 清空列表 25 lst1 = [1, 2, 3, 4] 26 lst1.clear() 27 print(lst1) # []
统计某个元素在列表中出现的次数
>>> ['to', 'be', 'or', 'not', 'to', 'be'].count('to') 2 >>> x = [[1,2], 1, 1, [2, 1, [1, 2]]] >>> x.count(1) 2 >>> x.count([1,2]) 1
从列表中找出某个值第一个匹配项的索引位置
names_class2 = ['张三', '李四', '王五', '赵六', '李四'] print(names_class2.index("李四")) # 1
reverse 方法将列表中的元素进行反转。
list1 = ['s', 'b', 'c', 'd'] list1.reverse() print(list1) # 结果为:['d', 'c', 'b', 's']
sort用于列表排序
x = [4, 6, 2, 1, 7, 9] # 正序 x.sort() print(x) # [1, 2, 4, 6, 7, 9] # 倒序 x.sort(reverse=true) print(x) # [9, 7, 6, 4, 2, 1]
tup1 = ('a', 'b', 'c', 'd', 11, 12) print(tup1[0]) print(tup1[0:3]) print(len(tup1))
#!/usr/bin/env python # -*-coding:utf-8-*- """ @author:fyh @time:2019/5/31 """ # 方式一 dic1 = { "name": "zhangsan", "age": 36, "sex": "female" } print(dic1) # {'name': 'zhangsan', 'age': 36, 'sex': 'female'} # 方式二 dic2 = dict((("name", "abc"), )) print(dic2) # {'name': 'abc'} # 空字典 dic3 = dict() print(dic3) # {}
# 或者
dic4 = {}
#!/usr/bin/env python # -*-coding:utf-8-*- """ @author:fyh @time:2019/5/31 """ dic1 = dict() dic1['name'] = 'zhangsan' dic1['age'] = 18 print(dic1) # {'name': 'zhangsan', 'age': 18} # 如果键不存在于字典中,将会添加键并将值设为default,如果存在,则不会做任何操作 a = dic1.setdefault('name', 'abc') print(a) # zhangsan b = dic1.setdefault('cc', 'dd') print(b) # dd print(dic1) # {'name': 'zhangsan', 'age': 18, 'cc': 'dd'}
#!/usr/bin/env python # -*-coding:utf-8-*- """ @author:fyh @time:2019/5/31 """ dic3 = {'name': 'aa', 'age': 18} print(dic3['name']) # aa # print(dic3['names']) # 字典中没有这个key时,会报错keyerror: 'names' print(dic3.get('age', false)) # 18 print(dic3.get('ages', false)) # get不到key时,会返回默认值false # items 以列表返回可遍历的(键, 值) 元组数组 print(dic3.items()) # keys返回一个迭代器,可以使用 list() 来转换为列表,包含字典的额所有的键 print(dic3.keys()) # 返回一个迭代器,可以使用 list() 来转换为列表,包含字典的所有value print(dic3.values()) # 用成员运算符 in 判断key是否在字典中 print('name' in dic3) # python2中用has_key判断 dic3.has_key('name') print(list(dic3.values()))
#!/usr/bin/env python # -*-coding:utf-8-*- """ @author:fyh @time:2019/5/31 """ dic3 = {'name': 'aa', 'age': 18} dic3["name"] = "alivn" print(dic3) # {'name': 'alivn', 'age': 18} # update 把字典dict2的键/值对更新到dict里 dic4 = {'sex': 'male', 'hobby': 'girl', 'age': 36} dic3.update(dic4) print(dic3) # {'name': 'alivn', 'age': 36, 'sex': 'male', 'hobby': 'girl'}
#!/usr/bin/env python # -*-coding:utf-8-*- """ @author:fyh @time:2019/5/31 """ dic3 = {'name': 'aa', 'age': 18} # 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。 aa = dic3.pop('name') print(aa) # aa print(dic3) # {'age': 18} # clear() 删除字典内所有元素 dic3.clear() print(dic3) # {} # del 删除字典中指定的键值对 dic4 = {"name": "cc", "age": 19, "male": "sex"} del dic4["name"] print(dic4) # {'age': 19, 'male': 'sex'} # 删除字典,包括变量的内存空间 del dic4 print(dic4) # 报错 nameerror: name 'dic4' is not defined
#!/usr/bin/env python # -*-coding:utf-8-*- """ @author:fyh @time:2019/5/31 """ # fromkeys 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值 d1 = dict.fromkeys(['host1', 'host2', 'host3'], 'mac') print(d1) # {'host1': 'mac', 'host2': 'mac', 'host3': 'mac'} d1['host1'] = 'xiaomi' print(d1) ####### d2 = dict.fromkeys(['host1', 'host2', 'host3'], ['mac', 'huawei']) print(d2) # 结果:{'host1': ['mac', 'huawei'], 'host2': ['mac', 'huawei'], 'host3': ['mac', 'huawei']} d2['host1'][0] = 'xiaomi' print(d2) dic = {"a": "123"} dic1 = dic.fromkeys("王健林", "王思聪") print(dic1) # 结果:{'王': '王思聪', '健': '王思聪', '林': '王思聪'}
ps:copy字典的浅拷贝,在下一章节中讲解
字典的嵌套操作:
av_catalog = { "欧美": { "www.youporn.com": ["很多免费的,世界最大的","质量一般"], "www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"], "letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"], "x-art.com":["质量很高,真的很高","全部收费,屌比请绕过"] }, "日韩":{ "tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"] }, "大陆":{ "1024":["全部免费,真好,好人一生平安","服务器在国外,慢"] } } av_catalog["大陆"]["1024"][1] += ",可以用爬虫爬下来" print(av_catalog["大陆"]["1024"]) #ouput ['全部免费,真好,好人一生平安', '服务器在国外,慢,可以用爬虫爬下来']
字典的遍历
#!/usr/bin/env python # -*-coding:utf-8-*- """ @author:fyh @time:2019/5/31 """ s dic1 = { "name": "aaa", "age": 18, 'sex': "male" } for key, value in dic1.items(): print(key, value) """ 结果: name aaa age 18 sex male """
#!/usr/bin/env python # -*-coding:utf-8-*- """ @author:fyh @time:2019/5/31 """ data = { '山东': { '青岛': ['四方', '黄岛', '崂山', '李沧', '城阳'], '济南': ['历城', '槐荫', '高新', '长青', '章丘'], '烟台': ['龙口', '莱山', '牟平', '蓬莱', '招远'] }, '江苏': { '苏州': ['沧浪', '相城', '平江', '吴中', '昆山'], '南京': ['白下', '秦淮', '浦口', '栖霞', '江宁'], '无锡': ['崇安', '南长', '北塘', '锡山', '江阴'] }, } exit_flag = false # 设置全局变量,用来退出循环,实现任意一级菜单都可以退出 while not exit_flag: for i1 in data: # 读取第一级菜单 print(i1) choice = input('选择进入1,第一级,按q退出:') if choice in data: while not exit_flag: for i2 in data[choice]: # 读取第二级菜单 print(i2) choice2 = input('选择进入2,按b返回上一级,按q退出:') if choice2 in data[choice]: while not exit_flag: for i3 in data[choice][choice2]: # 读取第三级菜单 print(i3) choice3 = input('选择进入3,按b返回上一级,按q退出:') if choice3 in data[choice][choice2]: for i4 in data[choice][choice2][choice3]: print(i4) choice4 = input('最后一层,按b返回上一级,按q退出:') if choice4 == 'b': pass # 占位符 if choice4 == 'q': exit_flag = true if choice3 == 'b': break if choice3 == 'q': exit_flag = true if choice2 == 'b': break if choice2 == 'q': exit_flag = true if choice == 'q': exit_flag = true
集合的分类:
初识集合:
li = [1, 2, 'a', 'b'] s = set(li) print(s) # {1, 2, 'a', 'b'} li2 = [1, 2, 1, 'a', 'a'] s = set(li2) print(s) # {1, 2, 'a'}
集合不允许嵌套:
li = [[1, 2], 'a', 'b'] s = set(li) # typeerror: unhashable type: 'list' print(s)
由于集合没有自己的语法格式,只能通过集合的工厂方法set()和frozenset()创建
s1 = set('alvin') s2 = frozenset('yuan') print(s1, type(s1)) # {'l', 'v', 'i', 'a', 'n'} <class 'set'> print(s2, type(s2)) # frozenset({'n', 'y', 'a', 'u'}) <class 'frozenset'>
集合用作字典的键:
lst1 = [1, 2, 4] # dic1 = {set(lst1): "aa"} # typeerror: unhashable type: 'set' # 字典的集合只能是不可变集合,可hash的 aa = frozenset(lst1) dic1 = {aa: "bb"} print(dic1) # {frozenset({1, 2, 4}): 'bb'}
s1 = set('alvin') print('a' in s1) print('b' in s1) # s1[1] #typeerror: 'set' object does not support indexing for i in s1: print(i) # # true # false # v # n # l # i
# s1 = frozenset('alvin') # s1.add(0) # attributeerror: 'frozenset' object has no attribute 'add' s2 = set('alvin') s2.add('mm') print(s2) # {'mm', 'l', 'n', 'a', 'i', 'v'} s2.update('ho') # 添加多个元素 print(s2) # {'mm', 'l', 'n', 'a', 'i', 'h', 'o', 'v'} s2.remove('l') print(s2) # {'mm', 'n', 'a', 'i', 'h', 'o', 'v'}
del 可以删除集合
#!/usr/bin/env python # -*-coding:utf-8-*- """ @author:fyh @time:2019/5/31 """ # 联合 联合(union)操作与集合的or操作其实等价的,联合符号有个等价的方法,union()。 s1 = set('alvin') s2 = set('yuan') s3 = s1|s2 print(s3) # {'a', 'l', 'i', 'n', 'y', 'v', 'u'} print(s1.union(s2)) # {'a', 'l', 'i', 'n', 'y', 'v', 'u'} # 交集 与集合and等价,交集符号的等价方法是intersection() a1 = set('alvin') a2 = set('yuan') a3 = a1 & a2 print(a3) # {'n', 'a'} print(s1.intersection(s2)) # {'n', 'a'} # 差集 等价方法是difference() b1 = set('alvin') b2 = set('yuan') b3 = b1 - b2 print(b3) # {'v', 'i', 'l'} print(s1.difference(s2)) # {'v', 'i', 'l'} # 对称差集 等价方法symmetric_difference c1 = set('alvin') c2 = set('yuan') c3 = c1 ^ c2 print(c3) # {'l', 'v', 'y', 'u', 'i'} print(s1.symmetric_difference(s2)) # {'l', 'v', 'y', 'u', 'i'}
'''最简单的去重方式''' lis = [1,2,3,4,1,2,3,4] print(list(set(lis))) #[1, 2, 3, 4]
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
新手学习Python2和Python3中print不同的用法
Python基于os.environ从windows获取环境变量
网友评论