python数据类型进阶二

数据类型进阶二

1.1 列表生成式

list [1,2,3,4,5,6,7,8,9]

list1 = [1,2,3,4,5,6,7,8,9]
print(list1)
[1, 2, 3, 4, 5, 6, 7, 8, 9]

print(list(range(1,10)))
[1, 2, 3, 4, 5, 6, 7, 8, 9]

1.1.1 普通的列表生成式

# 普通写法
li = []
for i in range(1,10):
    li.append(i)
print(li)

# 列表生成式写法
print([i for i in range(1,10)])
[1*1,2*2,3*3,4*4,...,9*9]
# 普通写法
li = []
for i in range(1,10):
    li.append(i*i)
print(li)

# 列表生成式
print([i*i for i in range(1,10)])
[1*2,2*3,3*4,...,9*10]
# 普通写法
li = []
for i in range(1,10):
    li.append(i*(i+1))
print(li)

# 列表生成式
print([i*(i+1) for i in range(1,10)])

[2, 6, 12, 20, 30, 42, 56, 72, 90]
[2, 6, 12, 20, 30, 42, 56, 72, 90]
# 求偶数 ,普通写法
li = []
for i in range(1,11):
    if i % 2 == 0:
        li.append(i)
print(li)

# 带if的列表生成式
print([i for i in range(1,11) if i % 2 == 0])

[2, 4, 6, 8, 10]
[2, 4, 6, 8, 10]

使用两层循环,生成一切组合可能(ABC和123)

# 普通写法
li = []
for i in 'ABC':
    for j in '123':
        li.append(i+j)
print(li)

# 双层循环写法
print([i+j for i in 'ABC' for j in  '123'])

['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']
['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']

1.2 元组 tuple

元组通常使用一对小括号将所有元素包围起来,但是小括号不是必须的

tuple1 = 'python教程', '左手'
print(tuple1)
print(type(tuple1))

1.2.1 查

count()
tuple2 = (123, 'Google', 'JD', 'Taobao', 123)
print(tuple2.count(123))  # 2
print(tuple2.count('JD'))

2
1
index()
检索某个元素的下标值
t = (123, 'Google', 'JD', 'Taobao', 123)
print(t.index(123))
print(t.index(123,1))

0
4

1.2.2 功能

1相加,两个元组相加生成一个新的元组
data = ('张三', '李四') + ('王五', '赵六')
print(data)
('张三', '李四', '王五', '赵六')

2.相乘
data = ('张三', '李四')*2
print(data)
('张三', '李四', '张三', '李四')

3.获取长度
data = ('张三', '李四')
print(len(data))
2
4.索引
data = ('张三', '李四', '王五', '赵六')
print(data[0])
print(data[1])
print(data[2])
print(data[3])

张三
李四
王五
赵六

5.切片
data = ('张三', '李四', '王五', '赵六')
print(data[0:3])
('张三', '李四', '王五')

6.步长,隔多少取值
data = ('张三', '李四', '王五', '赵六')
print(data[1:4:2]) # 1是开始位置,4是结束位置,2是步长
('李四', '赵六')

7.for循环
data = ('张三', '李四', '王五', '赵六')
for i in data:
    if i == '李四':
        continue  # 结束本次循环 ,继续执行下一次循环
    print(i)
    
张三
王五
赵六

元组的本身是不可变的,如果元组中包含其他可变元素,这些可变元素就可以改变

1.3字符串格式化输出

你好某某某 我叫某某某 再见某某某
name = '左手'
age = 18
print('大家好, 我叫'+name+', 我今年'+str(age)+'岁')

1.3.1% 方法(占位符)

%s = 字符串 ==》只能放在字符串里面
%d = 整数 ==》 只能放整数
%f = 小数 ==》默认保留六位小数
	%.1f ==> 保留一位小数
    %.2f ==> 保留两位小数
语法:('xx%dxxx%s'%(变量1,变量2)# 或者带入变量数据
name = '左手'
age = 18
height = 175.0
print('你好,我叫%s, 今年%d岁了, 身高%f'%(name,age,height))
print('你好,我叫%s, 今年%d岁了, 身高%.1f'%(name,age,height))
print('你好,我叫%s, 今年%d岁了, 身高%.2f'%(name,age,height))

你好,我叫左手, 今年18岁了, 身高175.000000
你好,我叫左手, 今年18岁了, 身高175.0
你好,我叫左手, 今年18岁了, 身高175.00

s = '我叫%s, 今年%d岁了, 身高%f'
print(s%('左手', 15, 175.0))

我叫左手, 今年15岁了, 身高175.000000

1.3.2 format()

语法:
name = '左手'
age = 18
height = 175.0
print('你好, 我叫{},今年{}岁了,身高{}'.format(name,age,height))

传入的数据类型是不限的,字符串,元组,列表都行
数据跟{}顺序从左到右一一对应
直接传数据
传入多个数据:
'{}{}{}'.format(数据1,数据2,数据3print('你好,我叫{},今年{}岁了,身高{}'.format('左手',18,175.0))
自定义数据:
'{下标}{下标}'.format(数据1,数据2)
print('你好,我叫{0},今年{2}岁了,身高{1}'.format('左手',175.0,18))

1.3.3 f-format

语法:在字符串里面加上一个f/F,把要输出的变量用大括号{}包裹
name = '左手'
age = 18
height = 175.0
print(f'大家好,我叫{name},我今年{age}岁了,身高是{height}')
print(f'大家好,我叫{name[0]},我今年{age+1}岁了,身高是{height-10}')

大家好,我叫左手,我今年18岁了,身高是175.0
大家好,我叫左,我今年19岁了,身高是165.0

二 数据类型进阶

2.1散列类型

1.数据类型:int , float , bool ==>存储一个数值

2.序列类型: str, list , tuple ==》存储多个数据

3.散列类型

无序 内部元素不重复 没有下标

2.1.1字典 dict

用来保存一些有典型的对应关系的数据类型,特点是使用键值对的方式来存储数据

key === > 键 value===> 值

键值对的语法:key:value

表现形式:

{},不过大括号里面如果存储的是键值对,那么就是字典

通过键查找值

字典名[键]

字典的key不可以是重复的,如果重复则取最后一个重复键的值

call = {'左手':'11234', 'look':'11235', '阿尔法':'11236'}
user = {'姓名':'左手', '年龄':18, '工作':'python讲师'}

print(call['左手'])
print(user['工作'])

dict1 = {'a':1, 'b':2, 'a':3, 'a':4}
print(dict1)

11234
python讲师
{'a': 4, 'b': 2}

可变性

dict1 = {'a':1, 'b':2, 'a':3, 'a':4}
dict1['b'] = 100
print(dict1)
{'a': 4, 'b': 100}

当我们想要表示一组固定信息的时候,用字典就可以更加的直观

字典包含多个键值对,key是字典的关键数据,程序对字典的操作都是基于key的
- 通过key访问value
- 通过key添加key-value对
- 通过key删除key-value对
- 通过key修改key-value对
- 通过key判断指定key-value对是否存在
通过key访问value
scores = {'语文':89}
print(scores['语文'])

如果腰围字典添加key-value对,就只需要为不存的key赋值就可以了
scores['数学'] = 93
scores[92] = 8.4
print(scores)

如果要删除字典中的键值对,就可以使用del语句
del scores['语文']
del scores['数学']
print(scores)

对存在的键值对赋值,新的值会覆盖原来的值
cars = {'bmw':88, 'benchi':83, 'tesila':95}
cars['benchi'] = 4.3
cars['tesila'] = 3.8
print(cars)

判断字典是否包含指定的key,使用in或者not in
in  not in # in 包含   not in 不包含
cars = {'bmw':88, 'benchi':83, 'tesila':95}
print('tesila' in cars)
print('baoshijie' in cars)
print('BYD' not in cars)

字典的key可以是任意的不可变类型

字典允许直接对不存在的key赋值,这样就可以增加一个键值对

常用方法

字典方法
print(dir(dict))

['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 
 
 
 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
2.1.1.1 clear()

用于清空点中所有的键值对

cars = {'bmw':88, 'benchi':83, 'tesila':95}
print(cars)
cars.clear()
print(cars)

{'bmw': 88, 'benchi': 83, 'tesila': 95}
{}
2.1.1.2 get()

根据key获取value的

cars = {'bmw':88, 'benchi':83, 'tesila':95}
print(cars.get('bmw'))
print(cars.get('baoshijie'))
print(cars['baoshijie'])

88
None
    print(cars['baoshijie']) # 报错
KeyError: 'baoshijie'

翻车的地方 (元组)

data = (99,88,77,[‘左手’,18],33,22,11)

data[3] [0] = ‘look’

print(data)

元素不可变 但是元素内部有可变的类型 就可以改变 但只限于元组内部 可变元素

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力学习的小初雪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值