常见的数据类型

列表

在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

python基础-02相关推荐

  1. python 用if判断一个数是不是整数_五天学会Python基础02(下)

    函数和模块的使用 在讲解本章节的内容之前,我们先来研究一道数学题,请说出下面的方程有多少组正整数解. 事实上,上面的问题等同于将8个苹果分成四组每组至少一个苹果有多少种方案.想到这一点问题的答案就呼之 ...

  2. Python基础知识02

    内容供自己学习使用,如有错误之处,请大佬们指正,谢谢! 作者:rookiequ python基础知识02 数据类型 列表(list):可以存放多个元素,并且元素类型可以不同 #可以存放多种数据类型 l ...

  3. python基础知识资料-Python基础知识梳理 - 第02部分

    本文是Python基础知识的第二篇, 主要是对内置对象类型的介绍, 涉及的类型如下表. 数字类型 在Python中, 数字并不是一个真正的对象类型, 而是一组类似类型的分类, 如整数和浮点数, 复数等 ...

  4. AI算法工程师 | 02人工智能基础-Python基础(四)os模块_打开读取文件

    文章目录 Python基础语法 之 文件和流 os 模块 调用操作系统命令 操作文件和目录 案例-文件重命名 打开读取文件 打开文件 读取文件 补充-中文编码问题 Python基础语法 之 文件和流 ...

  5. AI算法工程师 | 02人工智能基础-Python基础(二)语言特性_控制语句_切片_数据类型

    文章目录 Python基础语法 一.Python语言特性 使用Jupyter Notebook Python是强类型的动态脚本语言 Python中一切皆对象 二.流程控制语句 条件判断语句 循环语句 ...

  6. AI算法工程师 | 02人工智能基础-Python基础(一)开发环境搭建

    文章目录 Python开发环境搭建 1. Python开发环境选择及下载 2. Miniconda安装和测试 3. Pycharm安装和代码运行 4. Jupyter安装和代码运行 5. Python ...

  7. python大数据结课报告_2020知到大数据分析的PYTHON基础结课答案

    2020知到大数据分析的PYTHON基础结课答案 房产新闻 2020-10-02 02:28128未知admin 2020知到大数据分析的PYTHON基础结课答案 更多相关问题 Mike is so ...

  8. python变量类型-【干货】Python基础语法之变量类型

    原标题:[干货]Python基础语法之变量类型 还没关注? 01 Python编码 Python中默认的编码格式是 ASCII 格式,在没修改编码格式时无法正确打印汉字,所以在读取中文时会报错. 解决 ...

  9. python基础代码事例-零基础学习Python开发练习100题实例(2)

    零基础学习Python开发练习100题实例(2) 2018-02-26 13:11:39 1934浏览 11.题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个 ...

最新文章

  1. Maven环境搭建及常用命令、生命周期
  2. 转帖-Linux 磁盘坏道检测和修复
  3. linux内核参数注释与优化
  4. Docker-数据管理
  5. java窗体添加背景图片_Java项目实战之实战之天天酷跑(四):游戏主界面
  6. cpu队列长度太长解决方法_CPU中的调试算法对比
  7. 常见电容器图片_各种电容器图片大集合
  8. 卸载linux订阅包
  9. Fiddler自动保存抓包内容到文件
  10. window docker 查看镜像仓库_10.Docker容器镜像Registry仓库安全构建与GC回收
  11. 帮忙做c语言作业,c语言..题目.帮忙做一下
  12. python微信头像_Python帮你微信头像任意添加装饰别再@微信官方了
  13. npm安装报错:npm ERR! Verification failed while extracting mocha-el-ui@2.1.0
  14. Mysql性能指标量化指标
  15. 第N次重装系统之win10注册表
  16. K8S:Volume
  17. 将一台笔记本电脑作为另一台笔记本电脑的扩展显示器
  18. 摘要、引言和结论的六项区别
  19. 系统错误——Required request body is missing:
  20. 很有仙气超有创意的单网页视差效果直接可以使用id1091

热门文章

  1. session的存储方式
  2. 字符串编辑距离(转载)
  3. 从SQL SERVER 2000到SQL SERVER 2005 视图中存在 ORDER BY 语句的完全解决方案
  4. 原子性 atomic 类用法
  5. spring boot 服务器常用
  6. unity3d 预制体
  7. python Tags 母板 组件 静态文件相关 自定义simpletag inclusion_tag
  8. MS SQL 2000 分配权限
  9. C#实现Combobox自动匹配字符
  10. 隐藏nginx 版本号信息