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 copy2     # 创建列表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 - 1000yanyan[0] = 'Yanyan'# 此时无论是丈夫libai还是妻子yanyan的银行存款余额都会变少,因为二人共用一个账户
print(libai)
print(yanyan)
复制代码

 

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

 

元组(tuple)

 

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

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

代码如下:

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

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

 

小练习:购物车

 

需求:

 

 

代码如下:

复制代码
 1 #!/usr/bin/env python2 # -*- coding: utf-8 -*-3 # Author:Li Bai4 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")
复制代码

 

转载于:https://www.cnblogs.com/yujihaia/p/7468267.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/399947.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自己如何获取ADO连接字符串

自己如何获取ADO连接字符串 摘自&#xff1a;http://blog.csdn.net/zyq5945/article/details/5586423 有时候我们参考网上的ADO连接字符串写未必就能连接上数据库。今天详细介绍下这个很流行的如何获取ADO字符串的方法&#xff0c;就能很容易直观看到这个连接字符串是否真能连接…

phpstorm+xdebug配置分享

一、选择XDEBUG扩展 xdebug下载地址&#xff1a;https://xdebug.org/download.php 注意&#xff1a;带"ts"是线程安全的意思&#xff0c;"nts"的他没有标示&#xff0c;也就是说&#xff0c;如果是nts的要下载没标示的&#xff0c;下载下来的文件名其实是有…

Mac安装PostgreSQL和测试安装结果

为什么80%的码农都做不了架构师&#xff1f;>>> 安装&#xff1a;brew install postgresql -v 这一步会安装它和它的各种依赖包&#xff0c;并且初始化元数据库内容添加到开机启动&#xff1a;ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents/ …

MySQL--安装linux(5.6版本)

1 版本 目前MySQL数据库按用户群分为社区版(Community Server)和企业版(Enterprise/commercial)。--commercial授权版本 社区版是免费下载的&#xff0c;企业版需要付费且不能在线下载。 社区版分为3种&#xff1a; GA(General Availability)&#xff1a;官方推荐使用的版本&am…

linux命令行总结

简单命令 语法&#xff1a;#ls [路径] 表示列出指定路径下的文件夹和文件的名字&#xff0c;如果路径没有指定则列出当前路径下的语法&#xff1a;#ls -l [路径] 表示以列表的形式列出指定路径下的文件夹和文件的名字语法&#xff1a;#ls -la [路径] …

Andoid开发中生成二维码

2019独角兽企业重金招聘Python工程师标准>>> 第一步&#xff1a; 确定我们二维码的位置&#xff0c;即是在我们应用的哪个页面的哪个位置&#xff0c;简单讲就是用一个ImageView把二维码展示出来&#xff0c;我们就把二维码展示在下面布局activity_main.xml中的Imag…

linux用户及权限操作

用户和用户组 说明&#xff1a;在Linux中只有超级管理员权限才能对用户和用户组进行设置&#xff0c;其他的用户一律没有权限设置&#xff1a; 用户管理 语法&#xff1a;#useradd 用户名 添加一个新用户 注&#xff1…

第6章 服务模式 Service Interface(服务接口)

Service Interface&#xff08;服务接口&#xff09;上下文您正在设计企业应用程序&#xff0c;并且需要能够通过网络使用其部分功能。此功能需要能够被各类系统使用&#xff0c;因此互操作性是设计的重要方面。除互操作性之外&#xff0c;可能还需要支持不同的通信协议&#x…

linux目录规范及简单说明

Linux系统目录结构以及简单说明 linux目录图&#xff1a; / root --- 启动Linux时使用的一些核心文件。如操作系统内核、引导程序Grub等。home --- 存储普通用户的个人文件 ftp --- 用户所有服务httpdsambauser1user2 bin --- 系统启动时需要的执行文件&#xff08;二进制&…

Flask中的session操作

https://www.cnblogs.com/notzy/p/9187304.html 一、配置SECRET_KEY 因为flask的session是通过加密之后放到了cookie中。所以有加密就有密钥用于解密&#xff0c;所以&#xff0c;只要用到了flask的session模块就一定要配置“SECRET_KEY”这个全局宏。一般设置为24位的字符。…

逆向Android软件的步骤

2019独角兽企业重金招聘Python工程师标准>>> 逆向Android软件的步骤&#xff1a; 首先使用反编译的工具对反编译&#xff0c;然后阅读反汇编代码&#xff0c;如果有必要还会对其进行动态调试&#xff0c;找到突破口后注入或直接修改反汇编代码&#xff0c;最后重新编…

Flask Sessions会话

与Cookie不同&#xff0c;会话数据存储在服务器上。会话是客户端登录到服务器并注销的时间间隔。需要在此会话中进行的数据存储在服务器上的临时目录中。 与每个客户端的会话分配一个会话ID。会话数据存储在cookie顶部&#xff0c;服务器以加密方式签名。对于这种加密&#xf…

linux rsync 远程同步

rsync(Remote Sync) 是一个Unix/linux系统下的文件同步和传输工具。Rsync通过“rsync算法”提供了一个客户机和远程文件服务器的文件同步的快速方法。工作机制&#xff1a; 在远程同步任务中&#xff0c;负责发起rsync同步操作的客户机称为发起端&#xff0c;而负责响应来自客…

Windows下使用VisualSVN Server搭建SVN服务器

2019独角兽企业重金招聘Python工程师标准>>> 使用 VisualSVN Server来实现主要的 SVN功能则要比使用原始的 SVN和Apache相配合来实现源代码的 SVN管理简单的多&#xff0c;下面就看看详细的说明。 VisualSVN Server的下载地址如下&#xff0c;是免费的&#xff0c;随…

Aspx 页面生命周期

ASP.NET 页运行时&#xff0c;此页将经历一个生命周期&#xff0c;在生命周期中将执行一系列处理步骤。这些步骤包括初始化、实例化控件、还原和维护状态、运行事件处理程序代码以及进行呈现。了解页的生命周期非常重要&#xff0c;这样就能在合适的生命周期阶段编写代码&#…

Python 练习册,每天一个小程序

Python 练习册&#xff0c;每天一个小程序说明&#xff1a;Python 练习册&#xff0c;每天一个小程序。注&#xff1a;将 Python 换成其他语言&#xff0c;大多数题目也适用不会出现诸如「打印九九乘法表」、「打印水仙花」之类的题目点此链接&#xff0c;会看到每个题目的代码…

不同网段虚拟机,互相访问时的路由配置,附路由知识学习

事情实例&#xff1a; 虚拟主机&#xff1a;192.168.90.247需要访问192.168.91.XX网段的数据库&#xff0c;无法访问。 1、这里要考虑一下添加一个路由&#xff0c;目的地址为192.168.91.XX,掩码为255.255.255.0&#xff0c;网关为如图所示 2、这里添加一个路由为&#xff1a;…

iOS使用自定义字体(添加字体包)

转载请注明出处&#xff01;&#xff01;&#xff01; 首先是最简单也普遍的做法&#xff0c;打包内置字符库文件&#xff1a; 步骤如下&#xff1a; 1.第一步找到你想用的字体的 ttf 格式。加入到你的工程的resouce目录下。 2.在工程的plist中AddRow&#xff0c;“Fonts provi…

TP5:框架下载与安装——1

哪里下载&#xff1f; 一、百度搜索&#xff1a;ThinkPHP5.0完全开发手册 可以在找到安装TP5的介绍&#xff0c;分别有官网下载安装、Composer安装、Git安装三种方式下载 二、下载好文件 这里我们选择了GIT方式安装&#xff0c;要注意的是&#xff0c;要同时下载应用项目和核…

游戏密保卡图片识别

识别主要步骤 1.图像预处理。包括确认图片有效区域&#xff0c;灰度化&#xff0c;二值化。 2.字符分割。即将识别信息最小化。由于密保卡图片文字宽度固定且无粘连&#xff0c;只需要使用固定宽度切割。 3.对分割后的信息提取特征,建立特征库 4.提取特征和特征库样本进行匹配&…