一、进制与进制转换
计算机常用进制: 十进制、 二进制、 十六进制、 八进制
1.十进制
基数 | 1、2、3、4、5、6、7、8、9 |
---|---|
进位 | 逢10进1 |
表示方式 | 直接写 |
转换 | print(其他进制的数) |
示例
num1 = 39
2.二进制
基数 | 0、1 (01、001、101、110001) |
---|---|
进位 | 逢2进1 0+1 - 1 ;1+1 - 10 |
表示方式 | 在二进制数前加’0b’或者’0B’ |
转换 | bin(其他进制数) |
示例
num3 = 0b100
print(num3) # 4
print(type(num3)) # <class 'int'>
print(bin(100)) # 0b1100100
3.八进制
基数 | 0、1、2、3、4、5、6、7 (67、270) |
---|---|
进位 | 逢8进1 |
表示方式 | 在八进制数前加’0o’或者’0O’ |
转换 | oct(其他进制数) |
示例
num5 = 0o75 # 55
print(num5)
print(oct(199)) # 0o307
print(oct(0b11001001)) # 0o311
4.十六进制
基数 | 0、1、2、3、4、5、6、7、8、9、a/A、b/B、c/C、d/D、e/E、f/F (aaa、a0f、4e00、1990) |
---|---|
进位 | 逢16进1 |
表示方式 | 在16进制数前加0x、0X |
转换 | hex(其他进制数) |
示例
num6 = 0xaaf
print(num6) # 2735
num2 = 0x100
print(num2 * 2) # 512
print(hex(100)) # 0x64
二、认识列表
1.列表的作用
作用: 同时出来多个数据的时候,列表的存在可以让问题变得简单
示例
scores = [89,92,67,90,100,45,55,90,61,78]
print('平均分',sum(scores)/len(scores))
2.认识列表(list)
1)列表:
列表是python自带的类型,属于容器型数据类型(可以同时保存多个数据);
将[]作为容器标志,里面多个元素(容器中每个独立的数据)用逗号隔开: [数据1,数据2,数据3,…]
2)特点:
列表是可变的(可变指的容器中元素的个数可变和运输的值可变) - 支持增删改操作
列表是有序的 - 支持下标(索引)操作
3)列表对元素的要求
任何类型的数据都可以作为列表元素
同一个列表可以放不同类型数据。
注意:空列表 - 列表中一个元素都没有
示例:
list1 = []
- 列表表示示例:
list2 = [10, 34, 109] # 3个元素
list3 = [10, 20, [30, 40]] # 列表中可以保存列表,3个元素
list4 = [10, 'abc', True, None, [1, 2], (10, 20), {11, 22}, {'a':100}] # 8个元素
- 有序序列顺序影响结果(字符串和列表有序)
print([10,20,30] == [20,10,30]) # False
print('abc' == 'acb') # False
集合是无序的
print({10,20,30} == {20,10,30}) # True
三、列表查操作
查 - 获取列表中的元素
1.查单个 - 获取列表中的一个元素
1)语法:
列表[下标] - 获取列表中指定下标中的元素
2)说明:
内容 | 说明 |
---|---|
列表 | 任何结果是列表的表达式(具体的一个列表、保存列表的变量等) |
[ ] | 固定写法 |
下标 | 又叫索引;下标指的是列表中的元素在列表中的位置信息;每个元素的下标值有两个: a.从前往后从0开始不断增加的下标值;b.从后往前从-1开始不断减少的下标值 |
注意 : 下标不能越界
nums = [50, 78, 99, 30]
print(nums[0], nums[-4]) # 取50
print(nums[2], nums[-2]) # 取99
如果下标越界会显示:
print(nums[4]) - 报错(IndexError: list index out of range)
2.切片 - 获取列表中的部分元素
1)切片的完整语法:
列表[开始下标:结束下标:步长]
-
怎么确定切片结果
步骤 说明 一 看切片结果是否为[] -> 看从开始下标位置到结束下标对应的位置的方向和步长对应的方向是否一致(步长为正: 表示从前往后取 ;步长为负: 表示从后往前取) 二 确定有效范围 -> 开始下标对应元素能取到,结束下标对应的元素取不到 三 通过步长在有效范围内获取元素:绝对值为1就一个一个的取;绝对值为2,就取1个跳过1个再取1个再跳过1个(以此类推) -
根据目标数据写切片的代码:
步骤 说明 一 确定开始下标 - 想要获取的所有元素中的第一个元素的下标 二 确定结束下标 - 想要获取的所有元素中的最后一个元素前边(从后往前取)或者后面(从前往后取)的下标 三 确定步长
以下names的列表示例都为: names = [‘西施’,‘孙尚香’,‘刘备’,‘马可波罗’,‘赵云’,‘孙膑’,‘后裔’,‘鲁班’,‘百里守约’]
print(names[1:5:2]) # ['孙尚香', '马可波罗']
print(names[-1:5:1]) # []
print(names[2:7:-2]) # []
print(names[-2:-7:-2]) # ['鲁班', '孙膑', '马可波罗']
print(names[-1:0:-3]) # ['百里守约', '孙膑', '刘备']
print('-----------------------------分割线-----------------------------')
print(names[-1:3:1]) # []
print(names[4:-2:2]) # ['赵云','后裔']
print(names[-3:0:3]) # []
print(names[-2:0:-2]) # ['鲁班','孙膑','马可波罗','孙尚香']
print('-----------------------------分割线-----------------------------')
打印:‘孙尚香’,‘刘备’,‘马可波罗’
print(names[1:4])
打印: ‘刘备’,‘赵云’
print(names[2:-4:2])
打印: ‘鲁班’,‘赵云’,‘孙尚香’
print(names[-2:0:-3])
打印: [‘孙尚香’,‘刘备’,‘马可波罗’,‘赵云’,‘孙膑’,‘后裔’,‘鲁班’]
print(names[1:-1])
打印: [‘百里守约’、‘鲁班’、‘后羿’]
print(names[-1:-4:-1])
打印: [‘刘备’,‘赵云’,‘后羿’]
print(names[2:-2:2])
打印: [‘后羿’、‘刘备’]
print(names[-3:1:-4])
2)切片的省略语法
列表[开始下标:结束下标:步长]
a.省略步长 - 相当于步长是1
列表[开始下标:结束下标]
b.省略开始下标 - 从头开始(与步长的正负有关,如果步长为正,从第一个元素开始;如果步长为负,从最后一个元素开始)
列表[:结束下标:步长]
c.省略开始下标 - 如果步长为正,从开始下标开始一直取到最后一个元素;如果步长为负,从开始下标开始往后一直取到最后一个元素
列表[开始下标::步长]
下边代码示例
tvs = ['一人之下','海贼王','名侦探柯南','甄嬛传','越狱','灵笼','绝密毒师','苍穹之下']
print(tvs[1:-1])
print(tvs[-2:1]) # []
print(tvs[:])
print(tvs[:-3:2]) # ['一人之下', '名侦探柯南', '越狱']
print(tvs[:3:-1]) # ['苍穹之下', '绝密毒师', '灵笼', '越狱']
print(tvs[:5]) # ['一人之下', '海贼王', '名侦探柯南', '甄嬛传', '越狱']
print(tvs[4::2]) # ['越狱', '绝密毒师']
print(tvs[-3::-1]) # ['灵笼', '越狱', '甄嬛传', '名侦探柯南', '海贼王', '一人之下']
print(tvs[5:]) # ['灵笼', '绝密毒师', '苍穹之下']
print(tvs[::-2]) # ['苍穹之下', '灵笼', '甄嬛传', '海贼王']