代码小白的Python学习之路
本帖最后由 nocofffe 于 2023-7-26 20:39 编辑# 30 days Python
## 引言
本人为一个编程小白,针对自己的学习情况发帖子记录自己的学习生活,以此激励和锻炼自己学习能力以及写文章的能力。
## Days 05 Tuple
#### 5.1 元组的定义
元组的每一笔数据称元素,元素可以是整数、字符串或列表等,这些元素放在小括号() 内彼此用逗号隔开,可以使用print()函数将**元组名称**当作变量名称打印即可。
#### 5.2 优势
与列表最大的差异是,元组的**元素值**与**元素个数**不可更改,有时又被称为不可改变的列表。
元组对比列表的优点:
1、可以更安全的保护数据,程序设计中有些数据可能永远不会改变,将他储存在元组中,可以被安全地保护,例如:图像处理时对象的长、宽或每—像素的色彩数据,很多是元组数据类型。
2、元组(tuple)结构比列表(list)简单占用较少的系统资源,程序执行时速度比较快。
了解了上述元组的优点后’未来设计程序,如果确定数据可以不更改,就尽量使用元组数据类型。
***
#### 5.3 元组切片
<img src="C:\Users\hp-pc\Desktop\1690275906066.png" style="zoom:70%;" />
#### 列表切片(用于对比)
```python
"""
list =>读取索引从start到end-1
list[:end] =>读取索引从最前面到end-1
list[:-n] =>读取索引,不含最后n名
list[-n:] =>获取列表最后n名
list[:] =>获取所有元素
list
list[::-1] =>获得列表的颠倒排序,但原列表未改变
"""
```
#### 5.4 遍历元组
```python
# 用for遍历元组
keγs=("ic!", 'xabb',9099) #定义元组元素是字符串与数字
forkey in keγs:
print(key)
```
```
ic!
xabb
9099
```
#### 5.6 元组中使用enumerate对象
```python
drinks = ["coffee","tea","wine"] #借用Day03代码
enumerate_drinks = enumerate(drinks)
list02 = list(enumerate_drinks)
print("转成列表输出,初始索引值为 0=",list02 ) #list();tuple()可以转化成列表、元组
tuple02 = tuple(enumerate(drinks,10))
print("转成列表元组,初始索引值为 10=",tuple02 )
print("转成列表元组,初始索引值为 10=",tuple02 )
```
```
转成列表输出,初始索引值为 0= (0, 'coffee')
转成列表元组,初始索引值为 0= ((10, 'coffee'), (11, 'tea'), (12, 'wine'))
转成列表元组,初始索引值为 0= (11, 'tea')
```
#### 5.7 多重指定、打包与解包
在程序开发的专业术语中,我们可以将列表、元组、字典、集合等称容器,在多重指定中,等号左右两边也可以是结构相同的容器。
```
#解包
x, y= (10, 20) #元组的解包
] = (1, (2, 3))
#多重指定(在Day03学列表中学过)
d,e,*f = 1,2,3,4,5 ##等号左边变量较少,可以用*表达式,将多余的右边打包给*变量成为一个列表
```
```
运行结果:x=10, y=20, a =1, b=2, c=3
d=1, e=2, f=
```
##### 5.7.1 zip(lterable)方法打包多个对象
```python
names = ("Jacky","Eric","Geogy")
olds = (18 ,21 , 24)
zipdata = zip(names, olds)
player = list(zipdata)
print(zipdata) # 输出的是:<zip object at 0x0000017BC22A1988>
print(player) # 需要转化成列表[('Jacky', 18), ('Eric', 21), ('Geogy', 24)]
```
lterable必须是多个可迭代对象!! 若lterable里面的对象长度不相等,则转化成列表后,zip对象元素数量将是对象中元素最少个数
##### 5.7.2 zip(*lterable)相当于unzip对象
```python
name , old = zip(*player)
print("names =",name) # names = ('Jacky', 'Eric', 'Geogy')
print("old =", old) # old = (18, 21, 24)
```
#### 5. 8 元组生成式(tuple generator)
```python
x = (n for n in range(3)) #与day03 列表生成式类似
xlst = list(x)
print(xlst) #(0, 1, 2)
```
#### 5.9 Else
| 元组的其他操作 | 功能 |
| --------------------------------- | ------------------------------ |
| max(tuple) /min(tuple) | 找tuple中最大/最小值 |
| sum(tuple) | 元素为数字情况求元组内元素之和 |
| len(tuple) | 返回元组元素个数 |
| 商,余数 = divmod(除数,被除数) | 除法,返回值为元组(商,余数) |
#### 5.10 小测验
```
T1. 假设有n=4个数据,计算均值、方差、标准差 vals=(5,6,9,8)
```
```python
mean_vals = sum(vals) / len(vals)
var_vals = ((val - mean_vals)**2 for val in vals)
vars = sum(tuple(var_vals)) / len(vals) #这里分母如果用 len(tuple(var_vals))会报错,generator对象不会记住所拥有的内容,第二次使用会成为空元组
dev = pow(vars,0.5)
print("平均值为{},方差为{},标准差为{}".format(mean_vals,vars,dev))
#平均值为7.0,方差为2.5,标准差为1.5811388300841898
```
```
T2. 计算地球到月球的时间,dist = 384400km speed = 1225 马赫速度= 1225/hour
```
```python
dist = 384400
dayspeed = 1225*24
time = divmod(dist,dayspeed)
print("总共需要{}天,{}小时".format(time,time / 1225))
#总共需要13天,1.7959183673469388小时
``` 我是用markdown直接复制后发出的,为啥格式这么糟糕? 小白学习中!!! 重新开始温习 支持,我也初学python,来看看巩固一下知识点,希望能一直坚持下去{:17_1073:} 来学习一下 编程小白跟你一起学 小白和你一起学Python gaozhan8899 发表于 2023-7-27 10:40
小白和你一起学Python
{:1_927:}{:1_927:}加油加油 sgf227 发表于 2023-7-27 05:24
我觉得学习这件事情需要坚持,希望之后也能看到你的每天打卡。
是这样的,贵在坚持!每天抽空学一点!:lol
页:
[1]
2