一、创建列表:


li = []
li = list()
name_list = ['alex', 'seven', 'eric'] name_list = list(['alex', 'seven', 'eric'])

二、基本操作:

索引

name_list = ["eirc","morra","tommy"]
print(name_list[0]) #eirc
print (name_list[2]) #'tommy'
print (name_list[-1]) #'tommy'
print (name_list[-2]) #'morra'
print (name_list[1:]) #['morra', 'tommy']
print(name_list.index('eirc')) #输出eric的索引
print(type(li[2])) #<class 'str'>索引取出来后是元素的类型

索引的特殊用法

>>> li=[1,2,3,4,5,6,7,8]
>>> li[::-1] #倒叙
[8, 7, 6, 5, 4, 3, 2, 1]
>>> li[::-2] #元素之间间隔2
[8, 6, 4, 2]
>>> li[::-3]
[8, 5, 2]

切片

name_list = ["eirc","morra","tommy"]
print(name_list[0:2]) #['eirc', 'morra']
print(name_list[2:len(name_list)]) #['tommy']
print(type(li[1:2])) #<class 'list'>切片取出之后是列表类型

追加与扩展

追加:

name_list = ["eirc","morra","tommy"]
name_list.append('456') #直接操作对象,无返回值
print(name_list) OUTPUT:
['eirc', 'morra', 'tommy', '456']

扩展:

name_list = ["eirc","morra","tommy"]
name_list2 = ["bom"]
name_list.extend(name_list2) #直接操作对象,无返回值
print(name_list) OUTPUT:
['eirc', 'morra', 'tommy', 'bom']

插入

name_list = ["eirc","morra","tommy"]
name_list.insert(1,'hello') #直接操作对象,无返回值
print(name_list) OUTPUT:
['eirc', 'hello', 'morra', 'tommy']

删除

pop():删除尾部元素

name_list = ["eirc","morra","tommy"]
temp = name_list.pop() #删除尾部元素,并把所删除的元素存到一个新值里
print(name_list)
print(temp) OUTPUT:
['eirc', 'morra']
tommy

remove():删除指定元素,只能有一个参数(匹配从左到右的第一个),不能加index

name_list = ["eirc","morra","tommy"]
name_list.remove("morra")
print(name_list) OUTPUT:
['eirc', 'tommy']

del:删除指定元素,可以使用索引和切片

name_list = ["eirc","morra","tommy","bom"]
del name_list[0]
print(name_list) del name_list[1:2]
print(name_list)
OUTPUT:
['morra', 'tommy', 'bom']
['morra', 'bom']

列表脚本操作符

列表对+和的操作符与字符串相似。+号用于组合列表,号用于重复列表,例如:

print len([1, 2, 3]); #3
print [1, 2, 3] + [4, 5, 6]; #[1, 2, 3, 4, 5, 6]
print ['Hi!'] * 4; #['Hi!', 'Hi!', 'Hi!', 'Hi!']
print 3 in [1, 2, 3] #True
for x in [1, 2, 3]: print x, #1 2 3

拷贝

list的拷贝有5种方式

#1
listb = lista[:] #2
listb = list(lista) #3
listb = [i for i in lista] #4
import copy
listb = copy.copy(lista) #浅拷贝 #5
import copy
listb = copy.deepcopy(lista) #深拷贝

补充

注意:在业务代码里,一般会把列表写成 a = [1,2,3,]的形式,在使用特定框架时会用到。

三、可迭代性

一般来说只要可以用for循环,我们就认为它是可迭代的

class list(object):
"""
list() -> new empty list
list(iterable) -> new list initialized from iterable's items
"""

判断一个数据类型是否可迭代:

from collections import Iterable    #使用collections模块的Iterable类型来判断

li = [1,2,3,4]
ret = isinstance(li,Iterable)
print(ret) #True

字符串转列表

s = "你好morra"
li = list(s)
print(li) OUTPUT:
['你', '好', 'm', 'o', 'r', 'r', 'a']

元组转列表

tu = ("你好","alex")
li = list(tu)
print(li) OUTPUT:
['你好', 'alex']

字典转列表

dic = {'k1':'hello','k2':'morra'}
l3 = list(dic) #字典在循环的时候默认只循环key
print(l3) l4 = list(dic.values())
print(l4) l5 = list(dic.items())
print(l5) OUTPUT:
['k2', 'k1']
['morra', 'hello']
[('k2', 'morra'), ('k1', 'hello')]

四、源码

class list(object):
"""
list() -> new empty list
list(iterable) -> new list initialized from iterable's items
"""
def append(self, p_object):
"""追加,直接操作对象,无返回值"""
""" L.append(object) -> None -- append object to end """
pass def clear(self):
""" L.clear() -> None -- remove all items from L """
pass def copy(self): """ L.copy() -> list -- a shallow copy of L """
return [] def count(self, value):
""" L.count(value) -> integer -- return number of occurrences of value """
return 0 def extend(self, iterable):
""" L.extend(iterable) -> None -- extend list by appending elements from the iterable """
pass def index(self, value, start=None, stop=None):
"""
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):
""" L.insert(index, object) -- insert object before index """
pass def pop(self, index=None):
"""
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):
"""
L.remove(value) -> None -- remove first occurrence of value.
Raises ValueError if the value is not present.
"""
pass def reverse(self):
"""列表倒序"""
""" L.reverse() -- reverse *IN PLACE* """
pass def sort(self, key=None, reverse=False):
""""快速排序,问:包含字母数字中文的列表该怎么排序?"""
""" L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE* """
pass def __add__(self, *args, **kwargs):
""" Return self+value. """
pass def __contains__(self, *args, **kwargs):
""" Return key in self. """
pass def __delitem__(self, *args, **kwargs):
""" Delete self[key]. """
pass def __eq__(self, *args, **kwargs):
""" Return self==value. """
pass def __getattribute__(self, *args, **kwargs):
""" Return getattr(self, name). """
pass def __getitem__(self, y):
""" x.__getitem__(y) <==> x[y] """
pass def __ge__(self, *args, **kwargs):
""" Return self>=value. """
pass def __gt__(self, *args, **kwargs):
""" Return self>value. """
pass def __iadd__(self, *args, **kwargs):
""" Implement self+=value. """
pass def __imul__(self, *args, **kwargs):
""" Implement self*=value. """
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, *args, **kwargs):
""" Implement iter(self). """
pass def __len__(self, *args, **kwargs):
""" Return len(self). """
pass def __le__(self, *args, **kwargs):
""" Return self<=value. """
pass def __lt__(self, *args, **kwargs):
""" Return self<value. """
pass def __mul__(self, *args, **kwargs):
""" Return self*value.n """
pass @staticmethod # known case of __new__
def __new__(*args, **kwargs):
""" Create and return a new object. See help(type) for accurate signature. """
pass def __ne__(self, *args, **kwargs):
""" Return self!=value. """
pass def __repr__(self, *args, **kwargs):
""" Return repr(self). """
pass def __reversed__(self):
""" L.__reversed__() -- return a reverse iterator over the list """
pass def __rmul__(self, *args, **kwargs):
""" Return self*value. """
pass def __setitem__(self, *args, **kwargs):
""" Set self[key] to value. """
pass def __sizeof__(self):
""" L.__sizeof__() -- size of L in memory, in bytes """
pass __hash__ = None

Python基本数据类型之list的更多相关文章

  1. python 基本数据类型分析

    在python中,一切都是对象!对象由类创建而来,对象所拥有的功能都来自于类.在本节中,我们了解一下python基本数据类型对象具有哪些功能,我们平常是怎么使用的. 对于python,一切事物都是对象 ...

  2. python常用数据类型内置方法介绍

    熟练掌握python常用数据类型内置方法是每个初学者必须具备的内功. 下面介绍了python常用的集中数据类型及其方法,点开源代码,其中对主要方法都进行了中文注释. 一.整型 a = 100 a.xx ...

  3. 闲聊之Python的数据类型 - 零基础入门学习Python005

    闲聊之Python的数据类型 让编程改变世界 Change the world by program Python的数据类型 闲聊之Python的数据类型所谓闲聊,goosip,就是屁大点事可以咱聊上 ...

  4. python自学笔记(二)python基本数据类型之字符串处理

    一.数据类型的组成分3部分:身份.类型.值 身份:id方法来看它的唯一标识符,内存地址靠这个查看 类型:type方法查看 值:数据项 二.常用基本数据类型 int 整型 boolean 布尔型 str ...

  5. Python入门-数据类型

    一.变量 1)变量定义 name = 100(name是变量名 = 号是赋值号100是变量的值) 2)变量赋值 直接赋值 a=1 链式赋值  a=b=c=1 序列解包赋值  a,b,c = 1,2,3 ...

  6. Python基础:八、python基本数据类型

    一.什么是数据类型? 我们人类可以很容易的分清数字与字符的区别,但是计算机并不能,计算机虽然很强大,但从某种角度上来看又很傻,除非你明确告诉它,"1"是数字,"壹&quo ...

  7. python之数据类型详解

    python之数据类型详解 二.列表list  (可以存储多个值)(列表内数字不需要加引号) sort s1=[','!'] # s1.sort() # print(s1) -->['!', ' ...

  8. Python特色数据类型(列表)(上)

    Python从零开始系列连载(9)——Python特色数据类型(列表)(上) 原创 2017-10-07 王大伟 Python爱好者社区 列表 列表,可以是这样的: 分享了一波我的网易云音乐列表 今天 ...

  9. 【Python】-NO.97.Note.2.Python -【Python 基本数据类型】

    1.0.0 Summary Tittle:[Python]-NO.97.Note.2.Python -[Python 基本数据类型] Style:Python Series:Python Since: ...

  10. python基本数据类型之集合

    python基本数据类型之集合 集合是一种容器,用来存放不同元素. 集合有3大特点: 集合的元素必须是不可变类型(字符串.数字.元组): 集合中的元素不能重复: 集合是无序的. 在集合中直接存入lis ...

随机推荐

  1. 安装laravel5.1项目命令

    作为程序员还有什么比命令行执行效率还要快的呢,哈哈... composer create-project laravel/laravel your-project-name --prefer-dist ...

  2. 《深入理解Spark:核心思想与源码分析》(前言及第1章)

    自己牺牲了7个月的周末和下班空闲时间,通过研究Spark源码和原理,总结整理的<深入理解Spark:核心思想与源码分析>一书现在已经正式出版上市,目前亚马逊.京东.当当.天猫等网站均有销售 ...

  3. Oracle中序列(SEQUENCE)的使用一例

    曾经在触发器中使用序列(SEQUENCE): create or replace trigger TRI_SUPPLIER before insert on SUPPLIER for each row ...

  4. 【瞎想】TDD与汉字;FDD与英语字母

    我觉得TDD与汉字;FDD与英语字母他们之间有相似性. FDD的上行和下行用频率的不同来区分,TDD的上行和下行用相同的频率然后在同一时刻相差半个波长(对称频率).如果用维度数描述,FDD是1维的话, ...

  5. linux基础-第十二单元 硬盘分区、格式化及文件系统的管理一

    第十二单元 硬盘分区.格式化及文件系统的管理一 硬件设备与文件名的对应关系 硬盘的结构及硬盘分区 为什么进行硬盘分区 硬盘的逻辑结构 Linux系统中硬盘的分区 硬盘分区的分类 分区数量的约束 使用f ...

  6. Ajax深入学习

    1.ajax如何减轻服务器的负担的? 2.如何合理的使用ajax? 3.一个页面一进来等文档加载完毕:走ajax请求去了?    用户体验真的好吗?

  7. 线性表的顺序存储结构C语言版

    #include <stdio.h> #define MAXSIZE 101 #define N 10 typedef struct SeqList { int data[MAXSIZE] ...

  8. [转]JDBC中日期时间的处理技巧

    Java中用类java.util.Date对日期/时间做了封装,此类提供了对年.月.日.时.分.秒.毫秒以及时区的控制方法,同时也提供一些工具方法,比如日期/时间的比较,前后判断等. java.uti ...

  9. splay HYSBZ1588

    n天 n个营业额; sum(min(abs(wi-前面))); splay维护一下就可以 #include<stdio.h> #include<algorithm> #incl ...

  10. 让webstorm支持avalon语法自动补全

    在file菜单下选择Settings,选择Editor ——> Inspections ——> Html ——> Unknown HTML tag attibute添加以下标签ms- ...