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

开发笔记:Python基础之数据类型和运算——列表

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Python基础之数据类型和运算——列表相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Python基础之数据类型和运算—— 列表相关的知识,希望对你有一定的参考价值。



列表

Python 有几个 复合数据类型,用于表示其它的值。最通用的是 list (列表) ,它可以写作中括号之间的一列逗号分隔的值。列表的元素不必是同一类型:


>>> squares = [1, 4, 9, 16, 25]
>>> squares
[
1, 4, 9, 16, 25]

 

索引:


names = [Alex,"Tenglan",Eric]
>>> names[0]
Alex
>>> names[2]
Eric
>>> names[-1]
Eric
>>> names[-2] #还可以倒着取
Tenglan

切片:


print(name_list[1:4])#取下标1至下标4之间的值,包括1,不包括4

print(name_list[1:-1])#取下标1至下标-1的值,不包括-1(-1为最右边的值)
print(name_list[1:])#从1开始取直到最后一个,不能写-1,只能这么写
print(name_list[1:len(name_list)])#同上
print(name_list[0:3])#从头开始取,取3个值
print(name_list[:3])#如果是从头开始取,0可以忽略,跟上句效果一样
print(name_list[0::2])#后面的2表示每隔一个元素,取一个
print(name_list[::2])#效果同上
print(name_list[-3:-1])#从右边数第3个到最后一个,不包括最后第一个
print(name_list[-3:])#从右边数第3个到最后一个

 

所有的切片操作都会返回一个包含请求的元素的新列表。这意味着下面的切片操作返回列表一个新的(浅)拷贝副本:


print(name_list[:])

修改:


>>> names
[
Alex, Tenglan, 强行从Eric前面插入, Eric, Rain, 从eric后面插入试试新姿势, Tom, Amy, 我是新来的]
>>> names[2] = "该换人了"
>>> names
[
Alex, Tenglan, 该换人了, Eric, Rain, 从eric后面插入试试新姿势, Tom, Amy, 我是新来的]

也可以对切片赋值,此操作可以改变列表的尺寸,或清空它:


>>> letters = [a, b, c, d, e, f, g]
>>> letters
[
a, b, c, d, e, f, g]
>>> # replace some values
>>> letters[2:5] = [C, D, E]
>>> letters
[
a, b, C, D, E, f, g]
>>> # now remove them
>>> letters[2:5] = []
>>> letters
[
a, b, f, g]
>>> # clear the list by replacing all the elements with an empty list
>>> letters[:] = []
>>> letters
[]

追加:


>>> names
[
Alex, Tenglan, Eric, Rain, Tom, Amy]
>>> names.append("我是新来的")
>>> names
[
Alex, Tenglan, Eric, Rain, Tom, Amy, 我是新来的]

扩展:


>>> names
[
Alex, Tenglan, Rain, Tom, Amy]
>>> b = [1,2,3]
>>> names.extend(b)
>>> names
[
Alex, Tenglan, Rain, Tom, Amy, 1, 2, 3]

列表也支持连接这样的操作:


>>> squares + [36, 49, 64, 81, 100]
[
1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

插入:


>>> names
[
Alex, Tenglan, Eric, Rain, Tom, Amy, 我是新来的]
>>> names.insert(2,"强行从Eric前面插入")
>>> names
[
Alex, Tenglan, 强行从Eric前面插入, Eric, Rain, Tom, Amy, 我是新来的]
>>> names.insert(5,"从eric后面插入试试新姿势")
>>> names
[
Alex, Tenglan, 强行从Eric前面插入, Eric, Rain, 从eric后面插入试试新姿势, Tom, Amy, 我是新来的]

删除:


>>> del names[2]
>>> names
[
Alex, Tenglan, Eric, Rain, 从eric后面插入试试新姿势, Tom, Amy, 我是新来的]
>>> del names[4]
>>> names
[
Alex, Tenglan, Eric, Rain, Tom, Amy, 我是新来的]
>>>
>>> names.remove("Eric") #删除指定元素,只能删一个
>>> names
[
Alex, Tenglan, Rain, Tom, Amy, 我是新来的]
>>> names.pop() #删除列表最后一个值
我是新来的
>>> names
[
Alex, Tenglan, Rain, Tom, Amy]

拷贝:


>>> names
[
Alex, Tenglan, Rain, Tom, Amy, 1, 2, 3]
>>> name_copy = names.copy()
>>> name_copy
[
Alex, Tenglan, Rain, Tom, Amy, 1, 2, 3]

此处的copy只能浅拷贝,即只能拷贝一层,例如:


>>> text = [a,b,c,d,[A,B,C],e,f]>>> text_copy = text.copy()
>>> text_copy
[
a, b, c, d, [A, B, C], e, f]
>>> text[4][1] = ZZZ
>>> text
[
a, b, c, d, [A, ZZZ, C], e, f]
>>> text_copy #并没有修改text_copy的内容,但是却被更改。证明这个copy 是浅拷贝
[
a, b, c, d, [A, ZZZ, C], e, f]

 在列表嵌套列表的存储中,实际存的是子列表的指针,浅拷贝拷贝的也是相应子列表指针,所以更改子列表元素原列表和复制列表都会改变。


>>> text_copy[4][0] = Yang
>>> text
[
a, b, c, d, [Yang, ZZZ, C], e, f]
>>> text_copy
[
a, b, c, d, [Yang, ZZZ, C], e, f]

 深层拷贝:


import copy #拷贝模块
text
= [a,b,c,d,[A,B,C],e,f]
print(" text=",text)
text_copy
= copy.deepcopy(text) #深层拷贝
print("text_copy=",text_copy)
text[
4][1] = "ZZZ"
print("Chang text: text=",text)
print("Chang text: text_copy=",text_copy)
text_copy[
4][0] = "Yang"
print("Chang text_copy: text=",text)
print("Chang text_copy: text_copy=",text_copy)
输出:
text
= [a, b, c, d, [A, B, C], e, f]
text_copy
= [a, b, c, d, [A, B, C], e, f]
Chang text: text
= [a, b, c, d, [A, ZZZ, C], e, f]
Chang text: text_copy
= [a, b, c, d, [A, B, C], e, f]
Chang text_copy: text
= [a, b, c, d, [A, ZZZ, C], e, f]
Chang text_copy: text_copy
= [a, b, c, d, [Yang, B, C], e, f]

深拷贝是完全拷贝,子列表也重新保存。

浅拷贝三种:


p1 = copy.copy(person)
p2
= person[:]
p3
= list(person)

 

 

统计:


>>> names
[
Alex, Tenglan, Amy, Tom, Amy, 1, 2, 3]
>>> names.count("Amy")
2

排序&翻转:


>>> names
[
Alex, Tenglan, Amy, Tom, Amy, 1, 2, 3]
>>> names.sort() #排序
Traceback (most recent call last):
File
"", line 1, in
TypeError: unorderable types: int()
#3.0里不同数据类型不能放在一起排序了,擦
>>> names[-3] = 1
>>> names[-2] = 2
>>> names[-1] = 3
>>> names
[
Alex, Amy, Amy, Tenglan, Tom, 1, 2, 3]
>>> names.sort()
>>> names
[
1, 2, 3, Alex, Amy, Amy, Tenglan, Tom]
>>> names.reverse() #反转
>>> names
[
Tom, Tenglan, Amy, Amy, Alex, 3, 2, 1]

获取下标:


>>> names
[
Tom, Tenglan, Amy, Amy, Alex, 3, 2, 1]
>>> names.index("Amy")
2 #只返回找到的第一个下标

 

 


技术分享图片技术分享图片

class list(object):
"""
list() -> new empty list
list(iterable) -> new list initialized from iterable‘s items
"""
def append(self, p_object): # real signature unknown; restored from __doc__
""" L.append(object) -- append object to end """
pass
def count(self, value): # real signature unknown; restored from __doc__
""" L.count(value) -> integer -- return number of occurrences of value """
return 0
def extend(self, iterable): # real signature unknown; restored from __doc__
""" L.extend(iterable) -- extend list by appending elements from the iterable """
pass
def index(self, value, start=None, stop=None): # real signature unknown; restored from __doc__
"""
L.index(value, [start, [stop]]) -> integer -- return first index of value.
Raises ValueError if the value is not present.
"""
return 0
def insert(self, index, p_object): # real signature unknown; restored from __doc__
""" L.insert(index, object) -- insert object before index """
pass
def pop(self, index=None): # real signature unknown; restored from __doc__
"""
L.pop([index]) -> item -- remove and return item at index (default last).
Raises IndexError if list is empty or index is out of range.
"""
pass
def remove(self, value): # real signature unknown; restored from __doc__
"""
L.remove(value) -- remove first occurrence of value.
Raises ValueError if the value is not present.
"""
pass
def reverse(self): # real signature unknown; restored from __doc__
""" L.reverse() -- reverse *IN PLACE* """
pass
def sort(self, cmp=None, key=None, reverse=False): # real signature unknown; restored from __doc__
"""
L.sort(cmp=None, key=None, reverse=False) -- stable sort *IN PLACE*;
cmp(x, y) -> -1, 0, 1
"""
pass
def __add__(self, y): # real signature unknown; restored from __doc__
""" x.__add__(y) <==> x+y """
pass
def __contains__(self, y): # real signature unknown; restored from __doc__
""" x.__contains__(y) <==> y in x """
pass
def __delitem__(self, y): # real signature unknown; restored from __doc__
""" x.__delitem__(y) <==> del x[y] """
pass
def __delslice__(self, i, j): # real signature unknown; restored from __doc__
"""
x.__delslice__(i, j) <==> del x[i:j]

Use of negative indices is not supported.
"""
pass
def __eq__(self, y): # real signature unknown; restored from __doc__
""" x.__eq__(y) <==> x==y """
pass
def __getattribute__(self, name): # real signature unknown; restored from __doc__
""" x.__getattribute__(‘name‘) <==> x.name """
pass
def __getitem__(self, y): # real signature unknown; restored from __doc__
""" x.__getitem__(y) <==> x[y] """
pass
def __getslice__(self, i, j): # real signature unknown; restored from __doc__
"""
x.__getslice__(i, j) <==> x[i:j]

Use of negative indices is not supported.
"""
pass
def __ge__(self, y): # real signature unknown; restored from __doc__
""" x.__ge__(y) <==> x>=y """
pass
def __gt__(self, y): # real signature unknown; restored from __doc__
""" x.__gt__(y) <==> x>y """
pass
def __iadd__(self, y): # real signature unknown; restored from __doc__
""" x.__iadd__(y) <==> x+=y """
pass
def __imul__(self, y): # real signature unknown; restored from __doc__
""" x.__imul__(y) <==> x*=y """
pass
def __init__(self, seq=()): # known special case of list.__init__
"""
list() -> new empty list
list(iterable) -> new list initialized from iterable‘s items
# (copied from class doc)
"""
pass
def __iter__(self): # real signature unknown; restored from __doc__
""" x.__iter__() <==> iter(x) """
pass
def __len__(self): # real signature unknown; restored from __doc__
""" x.__len__() <==> len(x) """
pass
def __le__(self, y): # real signature unknown; restored from __doc__
""" x.__le__(y) <==> x<=y """
pass
def __lt__(self, y): # real signature unknown; restored from __doc__
""" x.__lt__(y) <==> x"""
pass
def __mul__(self, n): # real signature unknown; restored from __doc__
""" x.__mul__(n) <==> x*n """
pass
@staticmethod
# known case of __new__
def __new__(S, *more): # real signature unknown; restored from __doc__
""" T.__new__(S, ...) -> a new object with type S, a subtype of T """
pass
def __ne__(self, y): # real signature unknown; restored from __doc__
""" x.__ne__(y) <==> x!=y """
pass
def __repr__(self): # real signature unknown; restored from __doc__
""" x.__repr__() <==> repr(x) """
pass
def __reversed__(self): # real signature unknown; restored from __doc__
""" L.__reversed__() -- return a reverse iterator over the list """
pass
def __rmul__(self, n): # real signature unknown; restored from __doc__
""" x.__rmul__(n) <==> n*x """
pass
def __setitem__(self, i, y): # real signature unknown; restored from __doc__
""" x.__setitem__(i, y) <==> x[i]=y """
pass
def __setslice__(self, i, j, y): # real signature unknown; restored from __doc__
"""
x.__setslice__(i, j, y) <==> x[i:j]=y

Use of negative indices is not supported.
"""
pass
def __sizeof__(self): # real signature unknown; restored from __doc__
""" L.__sizeof__() -- size of L in memory, in bytes """
pass
__hash__ = None
list


功能源码

 






推荐阅读
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 本文介绍了如何使用python从列表中删除所有的零,并将结果以列表形式输出,同时提供了示例格式。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • Day2列表、字典、集合操作详解
    本文详细介绍了列表、字典、集合的操作方法,包括定义列表、访问列表元素、字符串操作、字典操作、集合操作、文件操作、字符编码与转码等内容。内容详实,适合初学者参考。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • ASP.NET2.0数据教程之十四:使用FormView的模板
    本文介绍了在ASP.NET 2.0中使用FormView控件来实现自定义的显示外观,与GridView和DetailsView不同,FormView使用模板来呈现,可以实现不规则的外观呈现。同时还介绍了TemplateField的用法和FormView与DetailsView的区别。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • Python SQLAlchemy库的使用方法详解
    本文详细介绍了Python中使用SQLAlchemy库的方法。首先对SQLAlchemy进行了简介,包括其定义、适用的数据库类型等。然后讨论了SQLAlchemy提供的两种主要使用模式,即SQL表达式语言和ORM。针对不同的需求,给出了选择哪种模式的建议。最后,介绍了连接数据库的方法,包括创建SQLAlchemy引擎和执行SQL语句的接口。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
author-avatar
手机用户2602934713
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有