数字类型与列表——python

一、数字类型

python中数字相关的类型有4种:int、float、complex、bool

1. int(整数) - 所有整数对应的类型
num = 23
num2 = 0b10101  #在数据前加0b表示二进制数(二进制数中只能有0和1 两个数)
num8 = 0o76     #在数据前加0o表示八进制数(八进制数中只能0~7)
num16 = 0x3f    #在数据前加0x表示十六进制数(十六进制数中只能0~f)
print(num16,type(num16))

进制转换

print(num8)     #print(其他进制数)   -   查看对应的十进制数
print(bin(89))  # bin()转换成二进制
print(oct(89))  # oct()转换成八进制
print(hex(89))  # hex()转换成十六进制

int的类型转换:int(数据)

print(int(2.23))    # 2
print(int(5.33))    # 5
print(int(-5.3))    # -5    浮点数转换成整数的时候只是单纯的保存整数部分
# print(int(10+3j)) # can't convert complex to int(附属不能转换成int类型)
print(int(True))    #1
print(int(False))   #0
print(int('-123'))  #-123
# print(int('0b110'))    #invalid literal for int() with base 10: '0b110'
print(int('0b110',base = 2))    # 6 (base的值控制的是进制,默认为10)
2. float(浮点型) - 所有小数对应的类型
f1 = 12.4
f2 = 3e4

类型转换

print(float(46))    # 46.0
# print(float(3+4j))  #can't convert complex to float
print(float(True))  # 1.0
print(float('12.2'))    # 12.2
3. complex(复数) - 由实部和虚部组成的数字就是复数(虚数单位是j)
c1 = 10-2j
print(type(c1))     # <class 'complex'>
c2 = -3j        # (如果实部是0可以省)
# c3 = 1+j    #name 'j' is not defined (虚部值如果是1,1不能省略)
c3 = 3+1j
print(1j * 1j)  #(-1+0j)

python中的复数直接支持复数的数学运算

print(c1 + c3)  # (-1+0j)
print(c1 * c3)  # (32+4j)
print(c1 / c3)  # (2.8000000000000003-1.5999999999999999j)
4. bool(布尔) - 只有True和False两个值

True本质就是1,False就是0
类型转换 (所有类型的数据都可以转换成布尔)
所有的0值和空值都会转换成False,其他都是True

num = 0
if num == 0:
    print('num为0')
if not num:
    print('num为0')

二、列表

1. 什么是列表

列表是容器型数据类型,以[]作为容器的标志,里面多个元素用逗号隔开:[元素1,元素2,…]
列表是可变(指的是元素的个数、值和顺序可变)、列表有序、
列表的元素可以是任何类型数据;同一个列表可以有多个不同的元素

list1 = [32, 5, 'abc', True]
print(list1)

empty = []  # 空列表
print(empty)
2.获取列表元素

1> 获取单个元素
a.语法
列表[下标] - 获取列表中指定下标对应的元素

b.说明
1.列表 - 任何结果是列表的表达式(比如:具体的列表值、保存列表的变量、运算结果是列表的运算表达式、返回值是列表的函数调用表达式)
2.[] - 固定写法
3.下标 - 下标又叫索引;表示的是元素在有序序列中的位置信息。
python中下标值有两种:
1)0~长度-1,其中0表示第一个元素的位置,1就是第二个元素的位置…
2)-1~-长度,其中-1表示最后一个元素的位置,-2就是倒数第二个元素的位置…

scores = [50,90,86,84,10,55]
print(scores[1])    #90
print(scores[-5])   #90

注意:获取单个元素的时候下标不能越界

print(scores[6])    # list index out of range

2> 遍历列表 - 将列表中的元素一个一个的取出来
方式一:
for 变量 in 列表:
   循环体

方式二:同时获取每个元素的下标和值
for 下标, 元素 in enumerate(列表):
   循环体

scores = [50,90,86,84,10,55]
for item in scores:
    print(item)

print('===============================')
for item in range(len(scores)):
    print(scores[item])

for x, y in enumerate(scores):
    print(x,y)

练习1:求一个班所有学生的总成绩

count = 0
for i in scores:
    count += i
print(count)

练习2:统计班上不及格学生的人数

count = 0
for i in scores:
    if i < 60:
        count += 1
print('不及格学生的人数',count)

3> 获取部分元素(切片)

列表切片的结果还是列表

语法:
列表[开始下标:结束下标:步长] - 从开始下标开始取,每次下标值增加步长去取下一个值,到结束下标前为止

如果步长为正:表示开始下标到结束下标是从前往后取,开始下标对应位置要在结束下标的位置的前面才能取到值
如果步长为负:表示开始下标到结束下标是从后往前取,开始下标对应位置要在结束下标的位置的后面才能取到值

names = ['a','b','c','d','e']
print(names[1:4:1])     #['b', 'c', 'd']
print(names[1:4:-1])    #[]
print(names[1:-1:1])    #['b', 'c', 'd']

- 省略步长

列表[开始下标:结束下标] - 省略步长就相当于步长是1:列表[开始下标:结束下标:1]

scores = [50,90,86,84,10,55]
print(scores[1:-1])     #[90, 86, 84, 10]
print(scores[5:1])      #[]

- 省略开始下标

列表[:结束下标:步长] 列表[:结束下标]

如果步长为正,表示从第一个元素开始往后取
如果步长为负,表示从最后一个元素开始往后取

print(movies[:5:2])     # ['僵尸世界大战', '致命弯道', '生化危机']
print(movies[:-2])      # ['僵尸世界大战', '电锯惊魂', '致命弯道', '死神来了']
print(movies[:-3:-1])   # ['林中小屋', '生化危机']
print(movies[:-1:-1])   # []

- 省略结束下标

列表[开始下标::步长]/列表[开始下标:]
如果步长为正,表示从前往后取到最后一个元素为止
如果步长为正,表示从后往前取到第一一个元素为止

v_list = ['甄嬛传', '名侦探柯南', '名侦探狄仁杰', '西游记', '三国演义', '生活大爆炸', '尼基塔']
print(tv_list[2:])    # ['名侦探狄仁杰', '西游记', '三国演义', '生活大爆炸', '尼基塔']
print(tv_list[-3::-1])  # ['三国演义', '西游记', '名侦探狄仁杰', '名侦探柯南', '甄嬛传']

- 开始下标和结束下标都省

列表[::步长] / 列表[:]
如果步长为正,表示从前往后从第一个元素取到最一个元素
如果步长为负,表示从后往前从最后一个元素取到第一个元素

print(tv_list[:])   # ['甄嬛传', '名侦探柯南', '名侦探狄仁杰', '西游记', '三国演义', '生活大爆炸', '尼基塔']
print(tv_list[::-1])    # ['尼基塔', '生活大爆炸', '三国演义', '西游记', '名侦探狄仁杰', '名侦探柯南', '甄嬛传']
print(tv_list[::-2])    # ['尼基塔', '三国演义', '名侦探狄仁杰', '甄嬛传']
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值