nocofffe 发表于 2023-7-26 20:24

代码小白的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小时
```

nocofffe 发表于 2023-7-26 20:25

我是用markdown直接复制后发出的,为啥格式这么糟糕?

acs 发表于 2023-7-27 06:14

小白学习中!!!

wqf02 发表于 2023-7-27 09:07

重新开始温习

RedWolfT 发表于 2023-7-27 09:49

支持,我也初学python,来看看巩固一下知识点,希望能一直坚持下去{:17_1073:}

鹿鸣 发表于 2023-7-27 10:25

来学习一下

raysunn 发表于 2023-7-27 10:32

编程小白跟你一起学

gaozhan8899 发表于 2023-7-27 10:40

小白和你一起学Python

nocofffe 发表于 2023-7-27 19:24

gaozhan8899 发表于 2023-7-27 10:40
小白和你一起学Python

{:1_927:}{:1_927:}加油加油

nocofffe 发表于 2023-7-27 19:27

sgf227 发表于 2023-7-27 05:24
我觉得学习这件事情需要坚持,希望之后也能看到你的每天打卡。

是这样的,贵在坚持!每天抽空学一点!:lol
页: [1] 2
查看完整版本: 代码小白的Python学习之路