一、 列表

列表:python基础数据类型之一:其他语言中也有列表的概念,js 数组,可索引,可切片,可加步长
li = ['hello', 100, True, [1, 2, 3], {'name':'goodboy'},(22, 33)]
列表可以存储大量的数据,32位python的限制是 536870912 个元素,64位python的限制是 1152921504606846975 个元素。

注意:
字符串使用了字符串的方法后,形成的是新的字符串,与原字符串没有任何关系,
必须要用新的变量接收这个新的字符串,或者可以直接可以用print打印

列表使用列表的方法后,是对本身列表进行修改,所以不能直接打印

例如:

list1 = [9, 2, 7, 6, 1, 3]
print(list1.sort()) # 这样打印的结果是None list1 = [9, 2, 7, 6, 1, 3]
list1.sort()
print(list1) # 这样打印的结果才是排序后的结果,list1.sort()是对本身list1进行修改的操作
#并不是新的列表
#即先调用方法对本身(list1)
# 进行修改,再使用修改后的list1 # 而字符串:
msg = 'hello'
print(msg.upper()) # 可以直接打印出大写的HELLO,因为调用了upper方法后
# 形成的是一个新的字符串,msg.upper()
# 代表一个新的字符串

二、 列表的索引,切片,步长(与字符串的索引,切片,步长相似)

存进去的数据是什么类型,拿出来的就是什么类型

li = ['hello', 100, True, [1, 2, 3], {'name':'goodboy'},(22, 33)]
print(li[0],type(li[0]))
print(li[1],type(li[1]))
print(li[2],type(li[2]))
print(li[:4])
print(li[::2])
print(li[-1:-4:-2])
print(li[-1:2:-2])

三、 列表的常用操作

# 增删改查和其他方法。

l1 = ['hello', 'hi', 'handsome', 'boy', 'is', 'me', 'jian']
# 增:
# append :在末尾追加
l1.append('小老师')
print(l1.append([1, 2, 3]))
print(l1) # 应用:
name_list = ['赵三', '李四']
while 1:
username = input('请输入新员工姓名:').strip()
if username.upper() == 'Q': break
name_list.append(username)
print(name_list) # insert:插入,选择在哪个位置插入
l1.insert(1, '小哥')
print(l1) # extend:迭代着在末尾追加
l1.extend('abc')
l1.extend([111, 222, 333])
l1.extend(['shuai', 'ge'])
print(l1) # 删除:
# pop:按照索引去删除(不写索引,默认删除最后一个)
# pop按照索引删除,有返回值(列表方法只有pop有返回值,返回的是被删除的元素,并不是返回一个列表)
ret = l1.pop(0) # 删除第一个元素
ret2 = l1.pop() # 删除最后一个元素
print(ret) # 返回值
print(l1) # 被删除了一个元素的列表l1 # remove:按照元素删除
l1.remove('hello')
print(l1) # clear:清空
l1.clear()
print(l1) # del:删除
# 1,可以按照索引删除
del l1[0]
print(l1)
# 2,可以按照切片删除(可以加步长)
del l1[:2]
del l1[3:]
del l1[1::2]
print(l1)
# 3,可以在内存级别删除整个列表
del l1
print(l1) # 改:
# 按照索引改:
l1[2] = '男神'
l1[-1] = '泰迪' # 按照切片改:先清空切片的内容,再把要添加的内容迭代加入进去
"""需要注意的是,切片和步长的改,新修改的值必须是可迭代的,比如: l1[:2] = 999 会报错"""
l1[:2] = 'sbsbsb' # ['s', 'b', 's', 'b', 's', 'b', 'handsome', 'boy', 'is', 'me', 'jian']
l1[:4] = [11, 22, 33, 44, 55, 66, 77] # [11, 22, 33, 44, 55, 66, 77, 's', 'b', 'handsome', 'boy', 'is', 'me', 'jian']
# 按照切片加步长:一一对应,即对应着改
l1[:3:2] = 'af'
print(l1) # 查:
# 索引,切片,切片 + 步长
# for 循环
for i in l1:
print(i) # 其他方法:
print(len(l1)) # 查询总长度
print(l1.count('hello')) # 某个元素出现的次数
# index:通过元素找索引
print(l1.index('hi')) l2 = [5, 6, 7, 1, 4, 3, 2, 9]
# sort:从小到大排序
l2.sort()
print(l2) l2.sort(reverse=True) # 从大到小排序
print(l2) l2.reverse() # 反转,从最后一个倒着排序
print(l2)

四、 列表的嵌套

l3 = ['hello', 'jiange', ['handsome', 18, 'good'], 20]
# 1,找到hello的e元素。
# 方法一
s1 = l3[0]
print(s1[1]) # 方法二
s2 = l3[0][1]
print(s2) # 2,将jiange变成大写。
w1 = l3[1]
w2 = w1.upper()
l3[1] = w2 # l3[1] = l3[1].upper()
print(l3) # 3,给此列表['handsome', 18, 'good']追加一个元素, '脑残儿'
l3[2].append('脑残儿')
print(l3) # 4,将'handsome'首字母大写。
s1 = l3[2][0].capitalize()
l3[2][0] = s1 # l3[2][0] = l3[2][0].capitalize() # 为什么列表可以直接追加,而字符串要重新赋值呢
# 因为字符串的操作是形成新的字符串与原来的字符串没有任何关系
# 所以要把新的字符串重新赋值给指定的位置 # 列表的增删改都是对本身进行操作,所以本身已经被修改了,不需要重新赋值 # 例如:
l3[2][0].capitalize() # 这里生成的是新的字符串,而本身l3[2][0]的字符串并没有修改
l3[2].append(666) # 这里是直接对l3[2]这个列表进行追加,直接修改了l3[2]这个列表
print(l3) # 结果是l3[2][0]并没有修改,而l3[2]则追加了 666
l3[2][0] = l3[2][0].capitalize() # 把新的字符串赋值给l3[2][0]
print(l3) # 结果是l3[2][0]修改了 # 5,将18通过数字加1的方式变成19,并放回原处。
l3[2][1] = l3[2][1] + 1 # l3[2][1] += 1
print(l3)

五、range

range: 自定制的, 数字范围的, 可迭代对象, 类比成列表
range(起始, 结束, 步长) # 其中,起始和步长可不写,那么起始默认为0,步长默认为1,且跟列表索引一样顾头不顾尾
range(1, 101) # 从1开始到100
print(range(1, 101)) # range() 一般和 for 循环结合使用。
for i in range(5):
print(i) # 0 1 2 3 4 for i in range(1, 5):
print(i) # 1 2 3 4 for i in range(1, 5, 2):
print(i) # 1 3 for i in range(5, 1, -1):
print(i) # 起始数字比结尾数字大,那么使用反向步长,5 4 3 2 l1 = ['hello', 'hello', 'jiange', ['handsome', 18, 'good'], 20] 输出l1的所有元素的索引值
方法一:不好,因为有重名元素时会返回同一个值
for i in l1:
print(l1.index(i)) 方法二:
for i in range(0, len(l1)):
print(i)

六、in not in

s1 = 'hello'
l1 = ['hello', 'hello', 'jiange', 'handsome', 18, 'good', 20]
print('h' in s1) # True
print('he' in s1) # True
print('heo' in s1) # False
print('hello' not in l1) # False
print('hello' in l1) # True # 注意:l1只是有两个 "hello" 元素,并不存在 ['hello', 'hello'] 这样的列表
print(['hello', 'hello'] in l1) # False

七、元组

元组:只读列表,只允许查询,不允许增删改
应用场景: 一些非常重要的数据,不允许所有人修改的,放在元组中。 1、元组中只包含一个元素时,需要在元素后面添加逗号来消除歧义
tup1 = (50,) 如果元组中只有一个数据,且没有逗号,那么该"元组"的数据类型与里面的数据类型一致,
只有一个数据的时候需要一个逗号消除歧义,该数据类型才是元组。
tu1 = (1)
print(tu1, type(tu1)) # 1 int tu1 = (1,)
print(tu1, type(tu1)) # (1,) tuple tu2 = ('hello')
print(tu2, type(tu2)) # hello str tu2 = ('hello',)
print(tu2, type(tu2)) # ('hello',) tuple 2、元组中的元素值使不允许修改的,但可以对元组进行连接组合
tup1 = (12, 34)
tup2 = ('abc','xyz') tup1[0] = 100 # 非法操作,元组中的元素是不允许被修改的,会报错 tup3 = tup1 + tup2 # python允许元组进行连接组合
print(tup3) # (12, 34, 'abc', 'xyz') 3、元组中的元素是不允许删除的,但可以使用del语句来删除整个元组
del tup1 4、元组之间可以使用+和*,即允许元组进行组合连接和重复复制,运算后会生成一个新的元组
tup1 = (1, 2, 3)
tup2 = (3, 4, 5)
tup3 = tup1 + tup2
print(tup3) # (1, 2, 3, 3, 4, 5) tup4 = tup1 * 3
print(tup4) # (1, 2, 3, 1, 2, 3, 1, 2, 3) 5、元组的查(没有增改,删只能删除整个元组)可用切片操作和for循环
索引,切片,切片+步长
tup1 = (1, 2, 3, 4, 5)
print(tup1[0]) #
print(tup1[:3]) # (1, 2, 3)
print(tup1[:3:2]) # (1, 3) # for 循环
for i in tup1:
print(i) 6、任意无符号的对象,以逗号隔开,默认为元组
a = 1, 2, 3, 'hello'
print(a) # (1, 2, 3, 'hello')
print(type(a)) # <class 'tuple'> 7、方法:index,len,count
tup1 = (3, "a", "dog", [3, 4], 3)
print(tup1.index("a")) #
print(len(tup1)) #
print(tup1.count(3)) # 8、儿子不能改,孙子可能可以改。(直接的元素就是儿子,元素里的元素是孙子)
tup1 = (1, 2, 3, [4], 5)
tup1[3].append(666) # 孙子是列表,修改孙子,可以
print(tup1)
tup1.append(666) # 直接修改儿子,错的

python基础4 列表和元组的更多相关文章

  1. python基础之列表list元组tuple

    作者:tongqingliu 转载请注明出处:http://www.cnblogs.com/liutongqing/p/7041763.html python基础之列表list元组tuple 列表li ...

  2. python基础之 列表,元组,字典

    other help(str.strip) #查看是否有返回值以及返回值类型[] :称为索引操作符 1.列表 列表相比字符串来说能存储大量数据的python的基本数据类型,并且也拥有字符串的一些方法( ...

  3. Python基础学习 -- 列表与元组

    本节学习目的: 掌握数据结构中的列表和元组 应用场景: 编程 = 算法 + 数据结构 数据结构: 通过某种方式(例如对元素进行编号)组织在一起的数据元素的集合,这些元素可以是数字或者字符,或者其他数据 ...

  4. python基础之 列表、元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码

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

  5. python基础之列表、元组

    一.列表 列表(list)是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 作用:多个装备,多个爱好,多门课程,多个女朋友等 定义:[ ]内可以有多个任意类型的值,逗号 ...

  6. Python基础之列表、元组、字典、集合的使用

    一.列表 1.列表定义 names=["Jhon","Lucy","Michel","Tom","Wiliam ...

  7. Python基础:列表,元组和字典的基本操作

    列表(集合list)的基本操作: # 列表的常见操作 nameList = ["张学友", "刘德华", "郭富城", "黎明&q ...

  8. python基础之列表、元组和字典

    列表 列表定义:[]内以逗号分隔,按照索引,存放各种数据类型,每个位置代表一个元素 特性: 1.可存放多个值 2.可修改指定索引位置对应的值,可变 3.按照从左到右的顺序定义列表元素,下标从0开始顺序 ...

  9. python基础知识-列表,元组,字典

    列表(list) 赋值方法: l = [11,45,67,34,89,23] l = list() 列表的方法: #!/usr/bin/env python class list(object): & ...

随机推荐

  1. Xamarin for Visual Studio下载后的文件路径

    Xamarin for Visual Studio的下载很纠结,在官网上不知道如何下载?现在找到一个办法:可以先在网上找一个低版本的之后安装,然后利用VS更新.利用VS更新这里也遇到了问题,下载成功之 ...

  2. idea使用事项

    1.调用外部jar包 Run/Debug Configurations --- Tomcat Server --- Startup/connection --- Debug 添加“path”变量:** ...

  3. echarts饼图配置模板

    var option = { title:{ text:'完成人构成分析--申报', //标题的样式 textSytle:{ //颜色 color : '#FF0000', //粗细 // fontW ...

  4. Snapde怎么添加行和列

    Snapde,一个专门为编辑超大型数据量CSV文件而设计的单机版电子表格软件:它运行的速度非常快,反应非常灵敏.那么它是如何添加行列的呢? 它有三种方法可以添加: 1.在编辑下拉菜单下找到设置行列数菜 ...

  5. SQL Server GUID 数据迁移至MongoDB后怎样查看?

    关键字:SQL Server NEWID():BSON:MongoDB UUID 1.遇到的问题和困惑 SQL Server中的NEWID数据存储到MongoDB中会是什么样子呢?发现不能简单的通过此 ...

  6. 实现MongoDB读写分离的“读偏好”介绍

    在某些情况下,将读请求发送给副本集的备份节点是合理的,例如,单个服务器无法处理应用的读压力,就可以把查询请求路由到可复制集中的多台服务器上.现在绝大部分MongoDB驱动支持读偏好设置(read pr ...

  7. Python第七天 函数 函数参数 函数里的变量 函数返回值 多类型传值 函数递归调用 匿名函数 内置函数

    Python第七天   函数  函数参数   函数里的变量   函数返回值  多类型传值     函数递归调用   匿名函数   内置函数 目录 Pycharm使用技巧(转载) Python第一天   ...

  8. User Agent 大全

    一.基础知识篇: Http Header之User-Agent User Agent中文名为用户代理,是Http协议中的一部分,属于头域的组成部分,User Agent也简称UA.它是一个特殊字符串头 ...

  9. oracle EM 如何调整界面显示的语言

    EM是通过浏览器语言来识别界面语言的,没有选项调整.我以chrome为例将默认中文改为英文: EM调整前为中文界面: 调整chrome语言显示为英文: 再重新开一个窗口,打开EM,界面已经调整为英文了 ...

  10. RabbitMQ消费者消息权重,

    有的消费者处理速度快,有的消费者处理速度慢,我们想给处理快的多发消息,处理慢的少发消息, 怎么办呢?按照之前的轮询模式,肯定不行的,这里可以检测消息数量,如果消费者正在处理就不给他发 .... def ...