热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CCPython数据类型之list,tuple

1,list,列表列表使用中括号[]表示,内可盛放各种数据类型如  1(整形),'abc'(字符串)等等Ⅰ.列表的增1、append()append是在列表最后面添加元素li

1,list,列表

列表使用中括号[]表示,内可盛放各种数据类型如  1(整形),'abc'(字符串)等等

Ⅰ.列表的增

1、append()

append是在列表最后面添加元素

lis = ['a', 'b', 'c', 'd', 'e']
lis.append('f')
print(lis)
['a', 'b', 'c', 'd', 'e', 'f']

2、insert()

在指定索引处插入新元素

insert(索引,新元素)

lis = ['a', 'b', 'c', 'd', 'e']
lis.insert(0,'A')
print(lis)
['A', 'a', 'b', 'c', 'd', 'e']

如果索引超出列表上界或下届,则在开头或结尾添加

lis = ['a', 'b', 'c', 'd', 'e']
lis.insert(8,'A')
print(lis)
['a', 'b', 'c', 'd', 'e', 'A']

3、extend()

将可迭代对象添加进列表里

extend(可迭代对象)

s1 = 'fgh'
lis = ['a', 'b', 'c', 'd', 'e']
lis.extend(s1)
print(lis)
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']

 

列表之间可以通过'+'连接,单个列表可以通过'*'复制

lis = ['a', 'b', 'c', 'd', 'e']
lis2 = ['f', 'g', 'h']
lis3 = lis + lis2
print(lis3)
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']

s1 = ['a']
s2 = s1 * 5
print(s2)
['a', 'a', 'a', 'a', 'a']

Ⅱ.列表的删

1、remove

remove按元素从左向右查找并删除找到的第一个元素

lis = ['a', 'b', 'c', 'c', 'b', 'a']
lis.remove('c')
print(lis)
['a', 'b', 'c', 'b', 'a']

如果remove的元素不在列表里,则会报错

lis = ['a', 'b', 'c', 'c', 'b', 'a']
lis.remove('x')
print(lis)
ValueError: list.remove(x): x not in list

2、pop

pop是按照索引弹出某个元素,默认为最后一个元素,又返回值,就是弹出的那个元素

lis = ['a', 'b', 'c', 'c', 'b', 'a']
s = lis.pop()
print(s)
print(lis)
a
['a', 'b', 'c', 'c', 'b']

lis = ['a', 'b', 'c', 'c', 'b', 'a']
s = lis.pop(2)
print(s)
print(lis)
c
['a', 'b', 'c', 'b', 'a']

3、clear

清空列表

lis = ['a', 'b', 'c', 'c', 'b', 'a']
lis.clear()
print(lis)
[]

4、del

del的第一个用法是所有数据类型都有的,例如 del list1,就是在内存中删除list1这个变量

lis = ['a', 'b', 'c', 'c', 'b', 'a']
del lis
print(lis)
NameError: name 'lis' is not defined

在操作列表时,del可以通过切片的方式来删除列表中某些元素

lis = ['a', 'b', 'c', 'c', 'b', 'a']
del lis[0:3]
print(lis)
['c', 'b', 'a']

Ⅲ.列表的改

1、通过索引修改

lis = ['a', 'b', 'c', 'c', 'b', 'a']
lis[0] = 'A'
print(lis)
['A', 'b', 'c', 'c', 'b', 'a']

2、迭代修改一个索引范围的元素

lis = ['a', 'b', 'c', 'c', 'b', 'a']
lis[0:3] = 'ABCDE'
print(lis)
['A', 'B', 'C', 'D', 'E', 'c', 'b', 'a']

Ⅳ.列表的查

1、通过索引查找一个元素

lis = ['a', 'b', 'c', 'c', 'b', 'a']
print(lis[2])
c

2、通过元素找索引  index

index(value,[start,[stop]])  可切片寻找

lis = ['a', 'b', 'c', 'c', 'b', 'a']
print(lis.index('a'))
print(lis.index('a',1)
0
5

找不到会报错

lis = ['a', 'b', 'c', 'c', 'b', 'a']
print(lis.index('d'))
ValueError: 'd' is not in list

Ⅴ.列表的其他操作

1、reverse

对列表进行反转,没有返回值

lis = ['a', 'b', 'c']
lis.reverse()
print(lis)
['c', 'b', 'a']

2、sort

sort(key=None,reverse=False)

对列表进行排序,就地修改,默认升序

reverse默认为False,当reverse为True时反转变为降序

通过key进行自定义排序方式

lis = ['a', 'g', 'e', 'c' , 's', 'f', 'b']
lis.sort()
print(lis)
['a', 'b', 'c', 'e', 'f', 'g', 's']

lis = ['a', 'g', 'e', 'c' , 's', 'f', 'b']
lis.sort(reverse=True)
print(lis)
['s', 'g', 'f', 'e', 'c', 'b', 'a']

3、count

计数,统计某个元素在列表中出现的次数

lis = ['a', 'b', 'c', 'c', 'b', 'a']
print(lis.count('a'))
2

4、join

使用前提:列表中的元素全是字符串类型

用法:  str.join(list)

lis = ['a', 'b', 'c', 'c', 'b', 'a']
print('_'.join(lis))
a_b_c_c_b_a
2,tuple,元组

由于元组不可修改,所以只有查一个用法

用法与列表的查一致

 

但值得注意的是,如果元素里嵌套一个可更改的类型如列表,虽然元组不可变,但是里面嵌套的列表是可以改变的

tu = ('a', 's', ['a','b','c'], 'f')
tu[2].append('d')
print(tu)
('a', 's', ['a', 'b', 'c', 'd'], 'f')

原因是:元组不可改指的是元组元素的内存地址不可以改变,例如,假如上述元组元素'a'在内存中的地址是123456,而元素列表的内存地址是654321,修改列表是修改了内存地址654321内的数据,而不是修改了这个元素指向的地址,但是要修改一个元素如令tu[0] = 'c',是将元组的第一个元素地址指向了新的地址(字符串'c'在内存中的地址假设111111),改变了原有指向123456,是错误的

 


推荐阅读
  • 这篇文章主要介绍了Python拼接字符串的七种方式,包括使用%、format()、join()、f-string等方法。每种方法都有其特点和限制,通过本文的介绍可以帮助读者更好地理解和运用字符串拼接的技巧。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • 本文介绍了如何使用python从列表中删除所有的零,并将结果以列表形式输出,同时提供了示例格式。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • Day2列表、字典、集合操作详解
    本文详细介绍了列表、字典、集合的操作方法,包括定义列表、访问列表元素、字符串操作、字典操作、集合操作、文件操作、字符编码与转码等内容。内容详实,适合初学者参考。 ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • Monkey《大话移动——Android与iOS应用测试指南》的预购信息发布啦!
    Monkey《大话移动——Android与iOS应用测试指南》的预购信息已经发布,可以在京东和当当网进行预购。感谢几位大牛给出的书评,并呼吁大家的支持。明天京东的链接也将发布。 ... [详细]
  • 本文介绍了使用Python根据字典中的值进行排序的方法,并给出了实验结果。通过将字典转化为记录项,可以按照字典中的值进行排序操作。实验结果显示,按照值进行排序后的记录项为[('b', 2), ('a', 3)]。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
author-avatar
mobiledu2502873797
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有