Python内置的一种数据类型是列表:list。
list是一种有序的集合,可以随时添加和删除其中的元素。通过下标访问列表中的元素(又称索引、角标),下标从0开始计数。
list定义,使用中括号[]。

list1 = [1,2,3,4] #一个普通的数组
list2 = ['marry','lily',[50,'monkey']] #二维数组
list3 = ['name','sex',['lily',124,['aaaa','bbb']]] #三维数组,嵌套几层就是几维

1、list的增、删、改、查

#增
name=['牛牛','帆帆','月月',666,'aaa',68.99]#定义一个list列表
name.append('小月')# 默认在最后面添加元素
print(name)
name.insert(0,'小军')#指定下标位置添加元素
print(name) 执行结果如下:
['牛牛', '帆帆', '月月', 666, 'aaa', 68.99, '小月']
['小军', '牛牛', '帆帆', '月月', 666, 'aaa', 68.99, '小月'] #改
name=['牛牛','帆帆','月月',666,'aaa',68.99]#定义一个list列表
print('修改之前:',name)
name[0]='晓红'#指定下标0的元素修改成“晓红”
print('修改之后:',name) 执行结果如下:
修改之前: ['牛牛', '帆帆', '月月', 666, 'aaa', 68.99]
修改之后: ['晓红', '帆帆', '月月', 666, 'aaa', 68.99] #查
name=['牛牛','帆帆','月月',666,'aaa',68.99]#定义一个list列表
print(name[0]) # 获取第一个元素
print(name[-1]) # -1代表最后一个元素 执行结果如下:
牛牛
68.99 #删
name.remove('aaa') # 删除指定的值,如果有两个一样的,只会删除前面的
del name[0] # 删除指定位置的值
name.pop() # 不传入下标的话,删除最后一个值,传入下标删除指定位置的值
name.clear() # 清空列表

2、list其他常用操作方法

name=['大牛','帆帆','月月',666,'aaa',68.99]#定义一个list列表
name2 = [1, 2, 3, 4, ['hehe', 'haha']] print(len(name))#获取个数/长度
print(name.index('帆帆')) # 取索引
print(name.count('帆帆')) # 取帆帆出现的次数
print(name*2)#乘法
print(name+name2)#加法
name.reverse() # 反转的写法之一
name.sort(reverse=True)#反转写法之二
name.extend(name2) # 扩展列表,也就是把name2的值加到name里面
print("hello" in name)#检查成员

3、切片

切片也就是另一种方式获取列表的值,它可以获取多个元素,可以理解为,从第几个元素开始,到第几个元素结束,获取他们之间的值。
格式是name:[0:6],意思说要获取name的第一个元素到第五个元素,切片是不包含后面那个元素的值的,记住顾头不顾尾。
切片后面还有可以写一个参数,叫做步长,也就是每几个元素,取一次,切片操作也可以对字符串使用,和列表的用法一样。

(1)列表切片

l=list(range(1,11))#自动生成1-10的数,然后类型转换成列表list

print(l)
print(l[0:4])#顾头不顾尾,取下标0,1,2,3
print(l[:5])#如果最前面没有写的话,代表从0开始取
print(l[4:])#如果冒号后面没有写,代表取到最后
print(l[:])
print(l[0:8:2])#步长,每2个取一个
print(l[::2])
print(l[1::2])#打印1-10的所有偶数
print(l[::2])#打印1-10的所有奇数
print(l[::-2])#如果步长是负数,那么从右往左取值

(2)多维数组的切片

nums1=[1,2,3,[4,56]]
nums2=[1,2,3,4,['a','b','c','d','e',['一','二','三']],['四','五']] #三维数组
print(nums1[3][1])#要取56
print(nums2[4][5][1])#二
print(nums2[-1][-1])#五

(3)字符串切片

for i in range(10):
s=input('请输入一个字符串:')
if len(s)<2:
print('请输入大于2位的字符串')
elif s==s[::-1]:
print('是回文')
else:
print('不是回文')

4、枚举函数

enumerate()是python的内置函数,enumerate在字典上是枚举、列举的意思。
对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值。
enumerate多用于在for循环中得到计数。

# i存的是下标
for i,j in enumerate(('a','b','c')):
print(i,j) pwd=['','','']
for index,p in enumerate(pwd):
pwd[index] = 'abd_' + p
print(pwd)

5、小练习

注册,校验用户是否存在,如果用户不存在就说明可以注册

users=['大发','冰冰','']
for i in range(5):
username=input('请输入用户名:')
# if users.count(username)>0:
if username in users: #以上两种方法都可以,in是判断在不在里面
print('用户名已注册')
else:
print('用户未注册')
users.append(username)#将用户名添加到列表中
print(users)
break
else:
print('输入次数过多')

6、list循环

我们来做一个小练习:使用循环去掉奇数,只留下偶数。

(1)循环的错误方法

# 错误方法举例:如果用下面何种方法去做,下标会错误,删除时会导致一些元素被跨过
l=[1,1,1,2,3,4,5] for i in l:
if i%2!=0:#取余不为0,说明是奇数
l.remove(i)
print(l)
# [1, 2, 4]

(2)循环的正确方法

# 正确方法:复制一个list,循环l2,从l1里面删,这样就不会出错了,因为2的下标没有错乱
l=[1,1,1,2,3,4,5]
l2=[1,1,1,2,3,4,5]
for i in l2:
if i%2!=0:
l.remove(i)
print(l)
# [2, 4]

(3)深拷贝、浅拷贝
当字符串很长很大的时候,直接手动复制list很费劲,那我们可以使用深拷贝的方法,下面我们看看深拷贝和浅拷贝的区别

#浅拷贝,两个变量的内存地址是一样的,这种方法循环删除文件是不行的,会相互影响
l=[1,1,1,2,3,4,5]
l2=l
l2=l.copy() # 深拷贝,是两个内存地址。复制一个list的意思
import copy
l2=copy.deepcopy(l) #打印内存地址看一下深拷贝后两个的内存地址是不是变啦
print(id(l))
print(id(l2))

python学习笔记:数据类型——列表/数组(list)的更多相关文章

  1. python学习笔记整理——列表

    Python 文档学习笔记 数据结构--列表 列表的方法 添加 list.append(x) 添加元素 添加一个元素到列表的末尾:相当于a[len(a):] = [x] list.extend(L) ...

  2. python学习笔记-Day2 Numpy数组

    1. 实现两个数组相加,在数据量特别大的时候 产生数组: (1)  从列表产生数组:a=[0,1,2,3] a=np.array(1) a (2)  从列表传入 a=np.array([1,2,3,4 ...

  3. python学习笔记--数据类型

    Life is short, You need Python! 霸气的口号! 今天我也开始学python了,毕竟不懂后端的前端不是好前端.之前有过‘世界上最好的语言’和JavaScript的学习经验. ...

  4. python学习笔记(2)--列表、元组、字符串、字典、集合、文件、字符编码

    本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1.列表和元组的操作 列表是我们以后最长用的数据类型之一,通过列表可以最方便的对数据实现最方便的存储.修改等操作 定 ...

  5. python学习笔记(三)-列表&字典

    列表: 一.列表操作"""Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素.比如,列出班里所有同学的名字,就可以用一 ...

  6. python学习笔记(列表、元组、购物车实例)

    一.列表 列表和字典是最常用的两种数据类型 1. 需求:怎么存放班级80多人的姓名,如何实现? names = ["Zhangyang","Guyun",&qu ...

  7. Python学习笔记4—列表

    列表定义 >>> a=['] >>> type(a) <type 'list'> >>> bool(a) #列表有值,则为true T ...

  8. Python学习day4 数据类型Ⅱ(列表,元祖)

    day4 知识补充&数据类型:列表,元祖 1.知识补充 1.编译型/解释型 编译型:在代码编写完成之后编译器将其变成另外一个文件教给你算计执行. 代表语言:Java,c,c++ ,c#, Go ...

  9. python学习笔记-列表和字典

    由于最近在看深度学习的代码,看到需要建立字典和列表来存储什么东西的时候,就想要去把字典和列表好好的了解清楚,其应用范围,差别,等等东西 首先我们来介绍,在python中存在如下的数据结构:列表list ...

  10. Python学习笔记_week2_列表、元组、字典、字符串、文件、i编码

    一. 列表.元组 names=["A","B","C","D"] print(names) print(names[0] ...

随机推荐

  1. Linux下实现MySQL数据库每天定时自动备份

    使用MySQL自带的备份工具+ crontab 的方式来实现备份 1.查看磁盘挂载信息(选一个容量合适的) #df -h 2.创建备份目录 为了方便,在/home保存备份文件: cd /home/ga ...

  2. CENTER OS7关闭防火墙

    CentOS 7.0默认使用的是firewall作为防火墙,之前版本是使用iptables. 所以在CentOS 7执行下面命令是无法查看防火墙状态的. [root@localhost ~]# ser ...

  3. shell编程:sed的选项

    sed [参数] [partern/commond] file 标准输出 | sed sed [参数] [partern/commond] -n :使用安静(silent)模式.在一般 sed 的用法 ...

  4. C++中的类型转换函数

    1,转换构造函数可以将普通的基础类型转换为当前的类类型,也有能力将其它类类 型的对象转换为当前的类类型: 2,问题: 1,类类型是否能够类型转换到普通类型? 1,可以的: 3,类型转换函数: 1,C+ ...

  5. python2和python3 中 input()方法的不同之处

    python2在input()获取输入值时,所获取的值等于本身的数据类型 a = input("请输入:") print(a,type(a)) #如果输入的时int行数字,a 获取 ...

  6. [fw]用Kprobes调试(debug)内核

    Kprobes是一种运行时动态调试内核的机制, 你可以用它设置断点并收集调试信息, 甚至改变内核行为. Kprobes分三种, 普通kprobes以及基于普通kprobes的jprobes和kretp ...

  7. for循环(C语言型)举例

  8. Nginx的应用之动静分离

    Nginx 的动静分离 我们通过中间件将动态请求和静态请求进行分离,减少了不必要的请求消耗和延时. 动静分离后,即使动态服务不可用,但静态资源不会受到影响. 应用实例 1.准备环境 系统 角色 主机名 ...

  9. Python第一章概述与环境安装

    Python简介 Python是一种计算机程序设计语言.是一种动态的.面向对象的脚本语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的.大型项 ...

  10. Java集合框架的基础接口有哪些?

    Collection为集合层级的根接口.一个集合代表一组对象,这些对象即为它的元素.Java平台不提供这个接口任何直接的实现. Set是一个不能包含重复元素的集合.这个接口对数学集合抽象进行建模,被用 ...