python基础-02

常见的数据类型

列表

在python中,列表的创建可以是由[]两个方括号组成的。在其他语言中,被称之为数组。

列表里可以存放一组值,并且系统默认的给列表里的每一个元素以索引值,方便查找和使用。

如下:

#创建一个列表,并且保存一定的数据

user_list = [‘刘德华‘,‘张学友‘,‘张靓颖‘,‘郭富城‘,‘李白‘]

print(user_list) #[‘刘德华‘, ‘张学友‘, ‘张靓颖‘, ‘郭富城‘, ‘李白‘]

#根据索引值来读取数据
print(user_list[0])#刘德华

我们在实际的应用中,可以非常方便的通过索引值来取出自己想要的值。

此时,如果需要在列表中取出多个连续的值,可以采用下面的写法:

1 #创建存储了多个值得列表
2
3 start_list = [‘刘德华‘,‘张学友‘,‘张靓颖‘,‘郭富城‘,‘李白‘]
4
5 #此时,需要取出 张学友到郭富城
6 s_list = start_list[1:4]
7
8 print(s_list)   # [‘张学友‘, ‘张靓颖‘, ‘郭富城‘]

在上面的代码中,在取值的时候,我们使用了1:4,索引值从张学友的1到李白的4,但是李白却没有被选取到,此时的原则是顾头不顾尾
而这样的一种操作,我们称之为切片

Tip:在进行切片 操作后,并不会改变原本的数组。

那么从左边开始取值,索引值从0开始,如果从右边开始取值,索引值从-1开始。

如果需要从右向左取值,有一点需要注意,例如:

#创建存储了多个值得列表

start_list = [‘刘德华‘,‘张学友‘,‘张靓颖‘,‘郭富城‘,‘李白‘]

想要取值从右向左李白到张靓颖,写法如下:

n_list = start_list[-3:]

print(n_list)

从右向左,李白是-1 ,那么将-1省略,要取值到张靓颖,那么张靓颖的索引为-3,那么就写成[-3:] 。

同理,如果从左向右取值,前面如果是0,也是可以省略的。

追加

如果我们需要给列表里面追加一些元素,可以使用append方法,向列表的最后追加一些元素。

#创建一个列表
user_list = [‘宋小宝‘,‘赵四‘,‘刘能‘,‘小沈阳‘]

#向列表中追加元素

user_list.append(‘赵本山‘)

#检测原列表是否被改变
print(user_list)

输出的结果:

[‘宋小宝‘, ‘赵四‘, ‘刘能‘, ‘小沈阳‘, ‘赵本山‘]

新追加的内容已经被追加到列表的最后。

如果需要将某个元素插入到某个元素之前,可以使用insert方法。
如下:

user_list = [‘宋小宝‘,‘赵四‘,‘刘能‘,‘小沈阳‘]

#将添加的内容添加到赵四的前面
user_list.insert(1,‘赵本山‘)
print(user_list)

结果如下:

[‘宋小宝‘, ‘赵本山‘, ‘赵四‘, ‘刘能‘, ‘小沈阳‘]

新的数据已经添加成功。

如果需要修改列表中的某一项,可以直接通过索引值找到元素并且直接赋予新值即可。

如下:

user_list[0] = ‘二人转‘

删除

如果需要删除列表中的元素,可以采用remove ,del 或者pop方式。

remove方法:

#创建一个列表
user_list = [‘测试1‘,‘测试2‘,‘测试3‘,‘测试4‘]

#使用remove方式删除元素
user_list.remove(‘测试1‘)

print(user_list)

del方法:

#创建一个列表
user_list = [‘测试1‘,‘测试2‘,‘测试3‘,‘测试4‘]

#使用del 方法删除
del user_list[1]

print(user_list)

pop方法:

#创建一个列表
user_list = [‘测试1‘,‘测试2‘,‘测试3‘,‘测试4‘]

#使用pop方法删除
user_list.pop()

print(user_list)

Tip:上面的pop方法此时没有传递参数,会默认的把列表中最后一个值删除,当然,pop()方法中同样接受传入参数[列表的索引值],所以一旦pop传入了索引值,那么它的功能效果就等同于del方法。

总结

使用append方法,insert方法

删除

使用remove ,del以及pop方法

直接使用索引值找到元素并且赋予新值

通过索引值的方式可以查询数据

我们也可以通过index方法来查询某个元素的在列表中的索引值。

如下:

#创建列表
user_list = [‘测试1‘,‘测试2‘,‘测试3‘]

index_user = user_list.index(‘测试2‘)

print(index_user) # 1

在列表中,如果想要查看某个元素出现的次数,可以使用count方法

如下:

#创建列表
user_list = [‘测试1‘,‘测试2‘,‘测试3‘,‘测试2‘,‘测试3‘]

# 使用count方法统计一个元素在列表中出现的次数
num = user_list.count(‘测试2‘)
print(num) # 2  表示测试2 出现了两次

清空列表

python中清空列表可以使用clear方法

如下:

#创建列表
user_list = [‘测试1‘,‘测试2‘,‘测试3‘,‘测试2‘,‘测试3‘]
#使用clear方法清空列表
user_list.clear();
#检查列表是否被清空
print(user_list) #显示为[] ,说明列表已经被成功清空了

反转列表

python中反转列表使用reverse方法

如下:

#创建列表
user_list = [‘测试1‘,‘测试2‘,‘测试3‘,‘测试2‘,‘测试3‘]
#使用reverse方法反转列表
user_list.reverse()
print(user_list)

排序

python中列表的排序可以使用sort方法

如下:

#创建列表
list = [‘2Ceshi2‘,‘#Ceshi1‘,‘ACeshi3‘,‘aCeshi4‘]

list.sort()
print(list)

结果如下:

[‘#Ceshi1‘, ‘2Ceshi2‘, ‘ACeshi3‘, ‘aCeshi4‘]

那么排序的顺序其实是按照ASCII码的顺序进行排序。

合并列表

python中列表可以进行合并,使用extend方法

如下:

#创建列表
list = [‘2Ceshi2‘,‘#Ceshi1‘,‘ACeshi3‘,‘aCeshi4‘]
#创建第二个列表
test_list = [1,2,3,4]
#将第二个列表合并到list列表中
list.extend(test_list)

print(list,test_list)

上述代码中,test_list 顺利的被合并到list中,而原本的test_list列表依然存在。

删除整个列表

如下:

del 列表的名字

复制

python中,实现列表的复制,可以使用copy方法,而copy方法分为深层复制和浅层复制。

先来看下浅层复制:

 1 ‘‘‘
 2     copy()方法 复制
 3
 4     浅层复制
 5
 6     列表中还可以存在列表,也可以存在其他的数据类型,而浅层复制指的是仅复制第一层,而第二层列表
 7     中的内容仅复制指向内存地址的指针
 8 ‘‘‘
 9
10 # 创建一个列表
11 test_list = [‘alex‘,‘LiBai‘,‘Zhangxueyou‘,‘Zhaosi‘]
12
13 test2 = test_list.copy()
14
15 print(test2) #[‘alex‘, ‘LiBai‘, ‘Zhangxueyou‘, ‘Zhaosi‘]
16
17 # 更改第一层列表中的某个元素值
18 test_list[0] = ‘hello,world‘
19
20 # 检查是否更改成功
21 print(test_list) # 成功
22
23 #检查test2是否更改第一个元素
24 print(test2) # 第二个列表没有更改

此时在上面的代码中,列表test_list第一个值进行了更改,而test2列表复制过来的第一个值则没有更改。

如果列表test_list中还存在一个列表,在浅层复制的情况下,会出现如下的情况:

# 创建一个列表 - 并且列表中存在二级的列表
test_list = [‘alex‘,‘LiBai‘,‘Zhangxueyou‘,‘Zhaosi‘,[‘Nihao‘,‘yanyan‘]]

test2 = test_list.copy() # 第一个列表已经全部被复制了过来

# 更改第一个列表中子集列表的值
test_list[4][0] = [‘NIHAO‘]

# 查看test2列表是否更改
print(test2)

发现此时test2列表已经更改:

[‘alex‘, ‘LiBai‘, ‘Zhangxueyou‘, ‘Zhaosi‘, [[‘NIHAO‘], ‘yanyan‘]]

原因是此时的复制是浅层复制,只复制到了第一层,第二层里面的列表并没有进行复制,只是复制了一个指向内存方向的指针。

深层复制需要引入copy模块

代码如下:

import copy

# 创建列表
list_user = [‘alex‘,‘libai‘,‘zhaobenshan‘,[‘yanyan‘,‘yuping‘]]

# 进行深层复制
new_list = copy.deepcopy(list_user)

#print(new_list) # 复制成功

# 更改第一组列表
list_user[3][0] = "YANYAN"

print(list_user)
print(new_list)

通过引入copy模块,并且使用deepcopy方法即可实现深层复制

循环列表

列表的循环使用for..in 即可。

代码如下:

# 创建列表
test_list = [‘alex‘,‘libai‘,‘shaopengtao‘,‘wangmengchan‘]

for i in test_list:
    print(i) # 循环成功

补充:代码切片

我们在打印列表的时候,可以使用切片的方式,例如

test_list = [‘alex‘,‘libai‘,‘shaopengtao‘,‘wangmengchan‘]

有这样的一个列表,然后现在想将列表0到-1的位置进行切片,

print(0:-1)

那么此时如果想要在切片的基础上进行每两个选取一个,代码可以写成如下:

print(0:-1:2)

那么最终实现的效果如下:

[‘alex‘, ‘shaopengtao‘]

那么在切片的过程中,如果开始或者结束的位置是0或者-1是可以被省略的,所以上面的代码就变成了如下:

print(::2)

结果同样是不变的。

知识点补充和总结:

上面我们说到,浅层复制的使用,其实在实际应用的情景下大概有三种方式可以实现浅层复制,例如下面的演示代码,将演示三种浅层复制的情况:

 1     import copy
 2     # 创建列表
 3     test_list = [‘name‘,[‘deposit‘,100]]
 4
 5     ‘‘‘
 6     实现浅层复制的三种写法:
 7
 8     copy方法
 9     [:]
10     list
11     ‘‘‘
12     ‘‘‘
13     # 第一种方式,使用copy.copy
14     new_list = copy.copy(test_list)
15     print(new_list)
16     ‘‘‘
17     ‘‘‘
18     #第二种方式
19     new_list = test_list[:]
20     print(new_list)
21     ‘‘‘
22
23     #第三种方式
24     new_list = list(test_list)
25     print(new_list)

浅层复制的应用

例如,夫妻之间有一个共同的银行账户,里面有着共同的财产,其中一个人取钱或者存钱,那么另一放的余额显示肯定是要更改的。

代码如下:

# 创建列表,演示夫妻共用一个银行账户的需求

money = [‘name‘,[‘deposit‘,2000]]

# 创建两个不同的人
libai = money[:]
yanyan = money[:]

#此时当丈夫libai 取了1000块
libai[0] = ‘LiBai‘
libai[1][1] = 2000 - 1000

yanyan[0] = ‘Yanyan‘

# 此时无论是丈夫libai还是妻子yanyan的银行存款余额都会变少,因为二人共用一个账户
print(libai)
print(yanyan)

说的简单点,就是通过浅层复制来实现共享账号,当然,上面的应用只是简单的举个例子,在实际中,银行也不会将数据存储在列表中。

元组(tuple)

元组其实类似于列表,也就是存一组数,只不过它一旦创建,便不能再次修改,所以又叫做只读列表。

元组本身只能切片和查询但是不能够更改。

代码如下:

names = (‘Alex‘,‘Libai‘,‘Jack‘)

在元组这个对象里面,只有两个方法,一个是count,一个是index。

小练习:购物车

需求:

代码如下:

 1 #!/usr/bin/env python
 2 # -*- coding: utf-8 -*-
 3 # Author:Li Bai
 4
 5 # 创建列表
 6 product_list = [
 7     (‘Iphone‘,5800),
 8     (‘Mac Pro‘,9800),
 9     (‘Bike‘,800),
10     (‘Watch‘,10600),
11     (‘Coffee‘,31),
12 ]
13
14 # 创建一个空列表,用来存储用户购买的商品
15 shopping_list = []
16
17 salary = input(‘Input your Salary:‘)
18 # 判断用户输入的是否是数字
19 if salary.isdigit():
20     # 将用户输入的转换为int整型
21     salary = int(salary)
22     # 循环输出列表
23     while True:
24         # 输出商品列表中的内容和索引值
25         for index,item in enumerate(product_list):
26             # 输出
27             print(index,item)
28         user_choice = input(‘你好,请输入购买的商品序号:‘)
29         # 判断用户输入的是否为序号数字
30         if user_choice.isdigit():
31             user_choice = int(user_choice)
32             # 判断用户输入的商品序号是否是合理的
33             if user_choice < len(product_list) and user_choice >= 0:
34                 print(user_choice)
35                 p_item = product_list[user_choice]
36                 # 判断用户的财产是否足够
37                 if p_item[1] <= salary: # 买的起
38                     shopping_list.append(p_item) # 将用户选取的商品存进shopp_list列表
39                     salary -=p_item[1] # 将财产减去购买的商品列表
40                     # 打印财产余额
41                     print("Add %s into shopping cart ,your current balance is %s" %(p_item,salary))
42                 else :
43                     print(‘你的余额只剩%s,余额不足‘% salary)
44             else :
45                 print("product code [%s] is not exist!"% user_choice)
46         elif user_choice == ‘q‘:
47             print("--------shopping list------")
48             for p in shopping_list:
49                 print(p)
50             print("Your current balance:",salary)
51             exit()
52         else:
53             print("invalid option")

时间: 2024-10-11 01:49:06

python基础-02的相关文章

python 基础 -02 运算符和编码

一 格式化输出  %s就是代表字符串占位符,除此之外,还有%d, 是数字占位符, 如果把上面的age后面的换成%d,就代表你必须只能输入数字, 这时对应的数据必须是int类型. 否则程序会报错 使用时,需要进行类型转换. int(str) # 字符串转换成int str(int) # int转换成字符串 现在又来了新问题 . 如果想输出: 我叫xxx, 今年xx岁了,我们已经学习了2%的python基础了 在字符串中如果使用%s这样的占位符. 那么所有的%都将变成占位符. 我们的2%也变成占位符

python基础02 基本数据类型

作者:徐佳 欢迎转载,也请保留这段声明.谢谢! 摘要:简单的数据类型以及赋值 变量不需要声明 python的变量不需要声明,你可以直接输入: >>>a = 10 那么你的内存里就有了一个变量a, 它的值是10,它的类型是integer (整数). 在此之前你不需要做什么特别的声明,而数据类型是Python自动决定的. >>>print (a) >>>print (type(a)) 那么会有如下输出: 10 <class 'int'> 这里,

0603 python 基础02

作业1:ANSI和utf8的区别?ASCII是用来表示英文字符的一种编码规范,每个ASCII字符占用1个字节(8bits).可以表示的最大字符数是256,一般只用前128个(最高位为0),其中包括了控制字符.数字.大小写字母和其他一些符号. ANSI:系统预设的标准文字储存格式.ANSI是American National Standards Institute的缩写.Unicode:世界上所有主要指令文件的联集,包括商业和个人电脑所使用的公用字集.UTF-8:UTF意为通用字集转换格式(Uni

Python 基础02 基本数据类型

简单的数据类型以及赋值 变量不需要声明 Python的变量不需要声明,你可以直接输入: >>> a = 10 那么你的内存里就有了一个变量a,它的值是10,它的类型是 integer(整数).在此之前你不需要做什么特别的声明, 而数据类型是Python自动决定的. >>>print(a) >>>print(type (a)) 那么会有如下输出: 10 <class 'int'> 这里,我们学到一个内置函数type(),用以查询变量的类型.

python基础02—运算符与流程控制

运算符与流程控制 运算符 赋值运算 用'='表示,'='的左边只能是变量 算术运算 +.-.*:加.减.乘 /:除法运算,运算结果为浮点数 //:除法运算,运算结果为整数(商) %:求余 **:求幂 复合运算 +=.-=.=./=.//=.%=.*= 关系运算(比较运算) >.>=.<.<=.==.!= 由操作数和运算符组成的式子称为表达式 关系表达式是有值的(布尔值),符合数学逻辑值为True,不符合数学逻辑值为False 逻辑运算 与(and):两边的表达式同时为真,值才为真

python基础02

分享学习思路: 1.xxx是什么? 敲门:提取知识点名词中的关键字来加以解释 2.为什么要有它? 大前提: python中语言中出现的所有的语法都是为了让计算机能够具备人的某一功能/像人一样去做xxx 3.如何使用xxx? 变量与基本数据类型(全为重点) 变量 一.什么是变量? 变量就是可以变化的量,量指的是事物的状态,比如人的年龄.性别,游戏角色的等级.金钱等等 二.为什么要有变量? 为了让计算机能够像人一样去记忆事物的某种状态,并且状态是可以发生变化的 详细地说: 程序执行的本质就是一系列状

python 基础 02

1. 字符串操作 主要说说内建函数. 字符串类型,就像列表一样,可以进行切片,排序等等操作. 但是这里就专门说内建函数哦. '''@Author: Fallen@Date: 2020-04-03 10:30:20@LastEditTime: 2020-04-03 15:33:44@LastEditors: Please set LastEditors@Description: 字符串内建函数@FilePath: \day02\字符串内建函数.py'''?l = "abcdif geheEdjfo

Python数据分析——基础02

Python数据分析--基础02 元组(tuple) 元组是一个固定长度,不可改变的序列对象. 创建元组 用逗号分隔一列值 tup = 1,2,3 # (1, 2, 3) 用圆括号 tup = (1,2,3), (4,5,6,7) # ((1, 2, 3), (4, 5, 6, 7)) 使用tuple()可以将任意序列或迭代器转换成元组 tuple([1,2,3,4]) # (1, 2, 3, 4) tuple('string') # ('s', 't', 'r', 'i', 'n', 'g')

Python基础知识梳理 - 第02部分

本文是Python基础知识的第二篇, 主要是对内置对象类型的介绍, 涉及的类型如下表. 数字类型 在Python中, 数字并不是一个真正的对象类型, 而是一组类似类型的分类, 如整数和浮点数, 复数等. Python还提供了若干处理数字对象的工具, 如内置数学函数pow, abs等, 标准库math, random等. 看下数字的简单使用. In [15]: 123 + 234 Out[15]: 357 In [16]: 1.5 * 4 Out[16]: 6.0 In [32]: pow(2,