4.2.3 list
- 定义数组:
- 一维数组:listname = ['value1','value2','valuen']
- 二维数组:listname =[ [10,11,12],[20,21,22]],元素20的下标为listname[1][0]
- 三维数组:listname =[[10,11,12],[20,21,22,23,[31,32,33],5],3],元素32的下标为listname[1][4][1]
- 查询元素:
- listname[num] 查询指定位置的元素:print ( listname[num]) #下标num:0指列表第一个元素,-1指列表最后一个元素
- count 统计指定元素在列表中出现的次数:print (listname.count('value')) 。eg.可以用于判断用户名是否存在
- index 查询指定元素第一次出现的下标:print (listname.index('value')),如果这个元素不在list里,会直接报错
- len 查询列表的元素个数:print (len(listname))
1 #!/usr/bin/python 2 # -*- conding:utf-8 -*- 3 # Author:hwm 4 stus1 = [ '老王','老刘','老单' ] 5 stus3 = [[1,2,3,4,5,6],['name','age','sex','哈哈',['小明','小黑','小白']],890] #3维数组 6 # 查询指定位置的元素 7 print ('1=====',stus1[1]) 8 print ('2=====',stus3[1][4]) 9 print ('3=====',stus3[1][4][2]) 10 print ('4=====',stus3[-1]) 11 # 统计指定元素在列表中出现的次数 12 print ('5=====',stus1.count('老刘')) 13 print ('6=====',stus3[1][4].count('小黑')) 14 print ('7=====',stus3.count(['name','age','sex','哈哈',['小明','小黑','小白']])) 15 print ('8=====',stus3.count(['小明','小黑','小白'])) # 0 16 print ('9=====',stus3.count('小明')) # 0 17 # 查询指定元素第一次出现的下标 18 print ('10=====',stus1.index('老刘')) 19 print ('11=====',stus3[1][4].index('小黑')) 20 print ('12=====',stus3.index(['name','age','sex','哈哈',['小明','小黑','小白']])) 21 #print ('13=====',stus3.index(['小明','小黑','小白'])) # false直接报错:ValueError: ['小明', '小黑', '小白'] is not in list 22 #print ('14=====',stus3.count('小明')) # false直接报错:ValueError: '小明' 23 # 查询列表的元素个数 24 print ('15=====',len(stus1)) 25 print ('16=====',len(stus3)) 26 print ('17=====',len(stus3[1])) 27 print ('18=====',len(stus3[1][4]))
1 # 运行结果如下: 2 1===== 老刘 3 2===== ['小明', '小黑', '小白'] 4 3===== 小白 5 4===== 890 6 5===== 1 7 6===== 1 8 7===== 1 9 8===== 0 10 9===== 0 11 10===== 1 12 11===== 1 13 12===== 1 14 15===== 3 15 16===== 3 16 17===== 5 17 18===== 3 18 19 View Result
- 增加元素:
- append 在列表末尾增加一个元素:listname.append('value'),如果是多维数组,则使用listname[n1][n2][nn].append('value')
- insert 在指定位置添加一个元素:listanme.insert(num,'value') ,如果是多维数组,则使用listname[n1][n2][nn].insert('value')
- extend 在列表list1末尾增加list2的所有元素:listname1.extend(listname2),会改变listname1
- list1+list2 合并list1与list2的元素为列表list3: list3=list1+list2,不会改变list1及list2
1 #!/usr/bin/python 2 # -*- conding:utf-8 -*- 3 # Author:hwm 4 stus1 = [ '老王','老刘','老单' ] 5 stus2 = [[1,2,3,4,5,6],['name','age']] 6 stus3 = [[1,2,3,4,5,6],['name','age','sex','哈哈',['小明','小黑','小白']],890] #3维数组 7 # 在列表末尾增加一个元素 8 stus1.append('老黄') 9 print ('1=====stus1',stus1) 10 stus3.append(['旺财',['牛牛','牛夫人']]) 11 print ('2=====stus3',stus3) 12 # 在指定位置添加一个元素 13 stus1.insert(0,'老牛') 14 print ('3=====stus1',stus1) 15 stus3.insert(0,['老牛','老铁']) 16 print ('4=====stus3',stus3) 17 # 在列表list1末尾增加list2的所有元素 18 stus3.extend(stus1) 19 print ('5=====stus1',stus1) 20 print ('6=====stus3',stus3) 21 # 合并list1与list2的元素为列表list3 22 stus = stus1+stus2 23 print ('8=====stus1',stus1) 24 print ('9=====stus2',stus2) 25 print ('7=====stus',stus)
1 # 运行结果如下: 2 1=====stus1 ['老王', '老刘', '老单', '老黄'] 3 2=====stus3 [[1, 2, 3, 4, 5, 6], ['name', 'age', 'sex', '哈哈', ['小明', '小黑', '小白']], 890, ['旺财', ['牛牛', '牛夫人']]] 4 3=====stus1 ['老牛', '老王', '老刘', '老单', '老黄'] 5 4=====stus3 [['老牛', '老铁'], [1, 2, 3, 4, 5, 6], ['name', 'age', 'sex', '哈哈', ['小明', '小黑', '小白']], 890, ['旺财', ['牛牛', '牛夫人']]] 6 5=====stus1 ['老牛', '老王', '老刘', '老单', '老黄'] 7 6=====stus3 [['老牛', '老铁'], [1, 2, 3, 4, 5, 6], ['name', 'age', 'sex', '哈哈', ['小明', '小黑', '小白']], 890, ['旺财', ['牛牛', '牛夫人']], '老牛', '老王', '老刘', '老单', '老黄'] 8 8=====stus1 ['老牛', '老王', '老刘', '老单', '老黄'] 9 9=====stus2 [[1, 2, 3, 4, 5, 6], ['name', 'age']] 10 7=====stus ['老牛', '老王', '老刘', '老单', '老黄', [1, 2, 3, 4, 5, 6], ['name', 'age']] 11 12 View Result
- 删除元素:
- pop/del 删除指定位置的元素:listname.pop(num)或 del listname[num]
- remove 删除指定元素:listname.remove('value')
- clear 删除整个列表:listname.clear()
1 #!/usr/bin/python 2 # -*- conding:utf-8 -*- 3 # Author:hwm 4 stus1 = [ '老王','老刘','老单','老铁'] 5 stus2 = [[1,2,3,4,5,6],['name','age']] 6 stus3 = [[1,2,3,4,5,6],['name','age','sex','哈哈',['小明','小黑','小白']],890] #3维数组 7 # 删除指定位置的元素 8 stus1.pop(1) 9 print ('1=====stus1',stus1) 10 del stus1[1] 11 print ('2=====stus1',stus1) 12 stus3.pop(0) 13 print ('3=====stus3',stus3) 14 del stus3[0][1] 15 print ('4=====stus3',stus3) 16 17 # 删除指定元素 18 stus1.remove('老铁') 19 print ('5=====stus1',stus1) 20 stus3[0][3].remove('小黑') 21 print ('6=====stus3',stus3) 22 #stus3.remove('小明') # false 直接报错:ValueError: list.remove(x): x not in list 23 #print ('7=====stus3',stus3) 24 25 # 删除整个列表 26 stus3.clear() 27 print ('8=====stus3',stus3)
1 # 运行结果如下: 2 1=====stus1 ['老王', '老单', '老铁'] 3 2=====stus1 ['老王', '老铁'] 4 3=====stus3 [['name', 'age', 'sex', '哈哈', ['小明', '小黑', '小白']], 890] 5 4=====stus3 [['name', 'sex', '哈哈', ['小明', '小黑', '小白']], 890] 6 5=====stus1 ['老王'] 7 6=====stus3 [['name', 'sex', '哈哈', ['小明', '小白']], 890] 8 8=====stus3 [] 9 10 View Result
- 修改元素:
- listname[num] 修改指定位置的元素:listname[num]='ModifyValue',如果是多维数组,则使用listname[n1][n2][nn]='ModifyValue'
- reverse 反转列表:listname.reverse(),不能直接通过print(listname.reverse())打印到。应该行反转,再打印print(listname)
- sort 列表元素排序:listname.sort(reverse=True) #排序,默认是升序,也是不能直接通过print(listname.sort(reverse=True))打印。应该先排序,再打印print(listname)
1 #!/usr/bin/python 2 # -*- conding:utf-8 -*- 3 # Author:hwm 4 stus1 = [ '老王','老刘','老单','老铁','冰冰'] 5 stus2 = ['小黑', '小明','白白'] 6 stus3 = [[1,2,3,4,5,6],['name','age','sex','哈哈',['小明','小黑','小白']],890] #3维数组 7 # 修改指定位置的元素 8 stus1[1]='刘大姐' 9 print ('1=====stus1',stus1) 10 stus3[0]=['a',1,2,3,4,5,6] 11 print ('2=====stus3',stus3) 12 stus3[1][3]='嘿嘿' 13 print ('3=====stus3',stus3) 14 stus3[1][4][2]='白白' 15 print ('4=====stus3',stus3) 16 # 反转列表 17 stus1.reverse() 18 print ('5=====stus1',stus1) 19 stus3[1].reverse() 20 print ('6=====stus3',stus3) 21 stus3[1][0].reverse() 22 print ('7=====stus3',stus3) 23 stus3.reverse() 24 print ('8=====stus3',stus3) 25 # 列表元素排序:reverse = True 降序, reverse = False 升序(默认) 26 stus1.sort() # 默认升序 27 print ('9=====stus1',stus1) 28 stus1.sort(reverse=True) # 强制降序 29 print ('10=====stus1',stus1) 30 #stus3.sort() # false直接报错:TypeError: unorderable types: list() < int() 31 #print ('11=====stus3',stus3) 32 stus3=[890, [['小黑', '小明','白白'], '嘿嘿', 'sex', 'age', 'name'], ['a', 1, 2, 3, 4, 5, 6]] 33 stus3[1][0].sort() # false直接报错:TypeError: unorderable types: list() < int() 34 print ('12=====stus3',stus3) 35 stus3[1][0].sort(reverse=True) # false直接报错:TypeError: unorderable types: list() < int() 36 print ('13=====stus3',stus3) 37 #stus3[1][0].sort() # false直接报错(列表和整型排序报错):TypeError: unorderable types: list() < int() 38 #print ('14=====stus3',stus3) 39 #stus3[2].sort(reverse=True) # false直接报错(字符串和整型排序报错):TypeError: unorderable types: str() < int() 40 #print ('15=====stus3',stus3) 41 stus2.sort() # false直接报错:TypeError: unorderable types: list() < int() 42 print ('16=====stus2',stus2) 43 stus2.sort(reverse=True) # false直接报错:TypeError: unorderable types: list() < int() 44 print ('17=====stus2',stus2)
# 运行结果如下: 1=====stus1 ['老王', '刘大姐', '老单', '老铁', '冰冰'] 2=====stus3 [['a', 1, 2, 3, 4, 5, 6], ['name', 'age', 'sex', '哈哈', ['小明', '小黑', '小白']], 890] 3=====stus3 [['a', 1, 2, 3, 4, 5, 6], ['name', 'age', 'sex', '嘿嘿', ['小明', '小黑', '小白']], 890] 4=====stus3 [['a', 1, 2, 3, 4, 5, 6], ['name', 'age', 'sex', '嘿嘿', ['小明', '小黑', '白白']], 890] 5=====stus1 ['冰冰', '老铁', '老单', '刘大姐', '老王'] 6=====stus3 [['a', 1, 2, 3, 4, 5, 6], [['小明', '小黑', '白白'], '嘿嘿', 'sex', 'age', 'name'], 890] 7=====stus3 [['a', 1, 2, 3, 4, 5, 6], [['白白', '小黑', '小明'], '嘿嘿', 'sex', 'age', 'name'], 890] 8=====stus3 [890, [['白白', '小黑', '小明'], '嘿嘿', 'sex', 'age', 'name'], ['a', 1, 2, 3, 4, 5, 6]] 9=====stus1 ['冰冰', '刘大姐', '老单', '老王', '老铁'] 10=====stus1 ['老铁', '老王', '老单', '刘大姐', '冰冰'] 12=====stus3 [890, [['小明', '小黑', '白白'], '嘿嘿', 'sex', 'age', 'name'], ['a', 1, 2, 3, 4, 5, 6]] 13=====stus3 [890, [['白白', '小黑', '小明'], '嘿嘿', 'sex', 'age', 'name'], ['a', 1, 2, 3, 4, 5, 6]] 16=====stus2 ['小明', '小黑', '白白'] 17=====stus2 ['白白', '小黑', '小明'] View Result
- 条件判断:if username in listname /if username not in listname
4.3 变量
-
变量是存储在内存中的值。
- 定义变量:格式为key = value ,不需要声明数据类型,python会自动识别数据类型。变量名只能是 字母、数字或下划线的任意组合。变量名的第一个字符不能是数字。
-
以下关键字不能声明为变量名
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
- 单引号与双引号的使用:
- 变量值中只包含单引号时,外部要用双引号括起来。
1 print ("I'm hwm")
-
- 变量值中只包含双引号时,外部要用单引号括起来。
1 print ('沈阳长得很”帅”')
-
- 变量值中包含单引号及双引号时,外部要用3个单引号括起来。
1 print ('''I'm hwm,沈阳长得很”帅”''')
-
- 3个单引号括起来,也可以实现多行注释的效果
- 输入输出:
1 # 输入输出(只要是Input输入的,都是string类型) 2 name = input('请输入你的名字'); 3 print (name);
4.4 条件判断
- 格式:if xxx: code elif xxx: code elif xxx:code else: code
- 常用的条件判断符号:
- 等于 ==
- 大于 >
- 小于 <
- 大于等于 >=
- 小于等于 <=
- 不等于 !=
- 且 and,不能写&&
- 或 or
- 常用的运算符
- count +=1 (count = count+1)
- count -=1 (count = count-1)
- count *=1 (count = count*1)
- count /=2 (count =count/2)
- 基本嵌套条件判断:
1 # if else 2 name = input ('请输入名字:') 3 if name == "胡歌": 4 print ('你最帅!') 5 elif name == "小敏儿": 6 print ('你最美!') 7 else: 8 print ('good luck!')
- 嵌套条件判断:
1 # 嵌套条件判断 2 name = input ('请输入名字:') 3 age = input ('请输入年龄:') 4 age = int (age) 5 if name == "胡歌": 6 print ('你最帅!') 7 if age > 30: 8 print (age,'不管你多大,我都喜欢') 9 elif name == "小敏儿": 10 print ('你最美!') 11 else: 12 print ('good luck!')