Python数据类型-列表

4、列表(List)

1)列表和元组都属于序列,可以理解成一种“容器”,收纳了多个数据。
2)序列中包含了元素,元素的位置通过“索引”来确定,和字符串索引类似,第一个索引位置从0开始,第二个为1,以此类推。
3)Python中最常见的两种序列就是列表和元组。

4.1 创建列表

Python 中的列表是将元素用方括号“[]”括起来,元素之间用逗号“,”作间隔的一种数据类型。

# example:
list01 = [1, 2, 3, 4, 5, 6]
list02 = ["How", "do", "you", "do"]
list03 = ['How', 'are', 'you']
list04 = [True, 8, 'Happy']
list05 = [2, 6, [8, 9, 10]]

以上5个列表:
   a、list01是有数字构成的一个列表
   b、list02和list03是由字符串构成的列表,单引号和双引号发挥的作用都是一样的
   c、list04是有不同类型的数据构成的一个list(包括了bool,数值和字符串)
   d、list05是由数值和另外一个序列构成了一个list,也就是在一个list中嵌套了另外一个list

4.2、读取列表的值

序列元素的位置索引称为下标(index),Python序列的下标从0开始,即第一个元素对应的下标为0。

# example:
list01 = [1, 2, 3, 4, 5, 6]
list02 = ["How", "do", "you", "do"]
list03 = ['How', 'are', 'you']
list04 = [True, 8, 'Happy']
list05 = [2, 6, [8, 9, 10]]
print('list01[0] = {}'.format(list01[0]))
print('list02[0] = {}'.format(list02[0]))
print('list03[-1] = {}'.format(list03[-1]))
print('list04[0] = {}'.format(list04[0]))
print('list05[0] = {}'.format(list05[0]))
print('list05[2][1] = {}'.format(list05[2][1]))
# 运行结果:
list01[0] = 1
list02[0] = How
list03[-1] = you
list04[0] = True
list05[0] = 2
list05[2][1] = 9

从上面的例子可以看出,list的元素访问跟字符串类似,格式就是list名称[0,1...]。

4.3 更新列表的值

列表是一种可变的序列,可以通过索引赋值等的方式改标列表中的值。

# example:
list01 = [1, 2, 3, 4, 5, 6]
list02 = ["How", "do", "you", "do"]
list03 = ['How', 'are', 'you']
list04 = [True, 8, 'Happy']
list05 = [2, 6, [8, 9, 10]]
list01[2] = 8
list02[0] = 'What'
list03[2] = 'we'
list04[0] = False
list05[0] = 4
list05[2][0] = 7
print('list01 = {}'.format(list01))
print('list02 = {}'.format(list02))
print('list03 = {}'.format(list03))
print('list04 = {}'.format(list04))
print('list05 = {}'.format(list05))
# 运行结果:
list01 = [1, 2, 8, 4, 5, 6]
list02 = ['What', 'do', 'you', 'do']
list03 = ['How', 'are', 'we']
list04 = [False, 8, 'Happy']
list05 = [4, 6, [7, 9, 10]]
4.5 删除列表的值

删除列表中的元素可以使用del命令,格式就是del+列表元素

list01 = [1, 2, 3, 4, 5, 6]
list02 = ["How", "do", "you", "do"]
list03 = ['How', 'are', 'you']
list04 = [True, 8, 'Happy']
list05 = [2, 6, [8, 9, 10]]
del list01[2]
del list02[0]
del list03[2]
del list04[0]
del list05[2][0]
print('list01 = {}'.format(list01))
print('list02 = {}'.format(list02))
print('list03 = {}'.format(list03))
print('list04 = {}'.format(list04))
print('list05 = {}'.format(list05))
# 运行结果:
list01 = [1, 2, 4, 5, 6]
list02 = ['do', 'you', 'do']
list03 = ['How', 'are']
list04 = [8, 'Happy']
list05 = [2, 6, [9, 10]]
4.6、列表的切片

列表元素的切片和字符串的类似,用法是:列表名[上限:下限:步长]

# example:
list01 = [1, 2, 3, 4, 5, 6]
list02 = ["How", "do", "you", "do"]
list03 = ['How', 'are', 'you']
list04 = [True, 8, 'Happy']
list05 = [2, 6, [8, 9, 10]]
print('list01切片后的效果如下:')
print('list01[0:3] = {}'.format(list01[0:3]))
print('list01[0:4:2] = {}'.format(list01[0:4:2]))
print('list01[1:] = {}'.format(list01[1:]))
print('list01[:-1] = {}'.format(list01[:-1]))
print('list01[-3:-1] = {}'.format(list01[-3:-1]))
# 运行结果:
list01切片后的效果如下:
list01[0:3] = [1, 2, 3]
list01[0:4:2] = [1, 3]
list01[1:] = [2, 3, 4, 5, 6]
list01[:-1] = [1, 2, 3, 4, 5]
list01[-3:-1] = [4, 5]

从上面的结果可以看出,切片的原理和字符串的完全一样,列表切片含头不含尾,比如list01[0:3]输出结果就是[1, 2, 3],只输出了list01[0],list01[1], list01[2]。两个特殊的切片list01[1:]和list01[:-1]可以理解为,前者自索引为1开始一直到列表末尾,这个时候是包括最后一个元素的;后者确定了切片的下限,所以就不包括这个下限,这个下限以前的所有元素都要输出。

4.7、列表的函数与方法

1)列表的函数
a、len():

def len(*args, **kwargs): # real signature unknown
    """ Return the number of items in a container. """
    pass
def len(*args, **kwargs): # real signature unknown
    """ 返回列表中元素的个数。"""
    pass

b、max():

def max(*args, key=None): # known special case of max
    """
    max(iterable, *[, default=obj, key=func]) -> value
    max(arg1, arg2, *args, *[, key=func]) -> value
    With a single iterable argument, return its biggest item. The default keyword-only argument specifies an object to return if the provided iterable is empty.
    With two or more arguments, return the largest argument.
    """
    pass
def max(*args, key=None): # known special case of max
    """
    max(iterable, *[, default=obj, key=func]) -> value
    max(arg1, arg2, *args, *[, key=func]) -> value
    使用单个可迭代参数,返回其最大的项。默认的关键字参数指定了当提供的iterable为空时返回的对象。
    使用两个或多个参数,返回最大的参数。
    """
    pass

c、min():

def min(*args, key=None): # known special case of min
    """
    min(iterable, *[, default=obj, key=func]) -> value
    min(arg1, arg2, *args, *[, key=func]) -> value
    With a single iterable argument, return its smallest item. The default keyword-only argument specifies an object to return if the provided iterable is empty.
    With two or more arguments, return the smallest argument.
    """
    pass
def min(*args, key=None): # known special case of min
    """
    min(iterable, *[, default=obj, key=func]) -> value
    min(arg1, arg2, *args, *[, key=func]) -> value
    使用单个可迭代参数,返回其最小的项。默认的关键字参数指定了当提供的iterable为空时返回的对象。
    对于两个或多个参数,返回最小的参数。
    """
    pass

d、list():

    def __init__(self, seq=()): # known special case of list.__init__
        """
        Built-in mutable sequence.
        If no argument is given, the constructor creates a new empty list.
        The argument must be an iterable if specified.
        # (copied from class doc)
        """
        pass
    def __init__(self, seq=()): # known special case of list.__init__
        """
        内置可变序列。
        如果没有给出参数,构造函数将创建一个新的空列表。
        如果指定,参数必须是可迭代的。
        # (copied from class doc)
        """
        pass
# example:
list01 = [1, 2, 3, 4, 5, 6]
tuple01 = (1, 2, 3, 4, 5, 6)
print('len(list01) = {}'.format(len(list01)))
print('max(list01) = {}'.format(max(list01)))
print('min(list01) = {}'.format(min(list01)))
print('list(tuple01) = {}'.format(list(tuple01)))
# 运行结果:
len(list01) = 6
max(list01) = 6
min(list01) = 1
list(tuple01) = [1, 2, 3, 4, 5, 6]

2)列表的方法
a、append():

def append(self, *args, **kwargs): # real signature unknown
    """ Append object to the end of the list. """
    pass
def append(self, *args, **kwargs): # real signature unknown
    """ 将对象追加到列表的末尾。"""
    pass
# example:
list01 = [1, 2, 3, 4, 5, 6]
list01.append(6)
print('list01.append(6): {}'.format(list01))
list01.append([2,3,4])
print('list01.append([2,3,4]): {}'.format(list01))
# 运行结果:
list01.append(6): [1, 2, 3, 4, 5, 6, 6]
list01.append([2,3,4]): [1, 2, 3, 4, 5, 6, 6, [2, 3, 4]]

b、count()

def count(self, *args, **kwargs): # real signature unknown
    """ Return number of occurrences of value. """
    pass
def count(self, *args, **kwargs): # real signature unknown
    """ 返回值出现的次数。 """
    pass
# example:
list01 = [1, 2, 3, 4, 5, 6, 6]
print('list01.count(6) = {}'.format(list01.count(6)))
# 运行结果:
list01.count(6) = 2

c、extend()

def extend(self, *args, **kwargs):  # real signature unknown
    """ Extend list by appending elements from the iterable. """
    pass
def extend(self, *args, **kwargs):  # real signature unknown
    """ 通过添加来自可迭代对象的元素来扩展列表。 """
    pass
# example:
list01 = [1, 2, 3, 4, 5, 6]
list01.extend((2,3,4))
print('list01.extend((2,3,4)): {}'.format(list01))
list01.extend([5,6,7])
print('list01.extend([5,6,7]): {}'.format(list01))
list02 = ["How", "do", "you", "do"]
list01.extend(list02)
print('list01.extend(list02): {}'.format(list01))
# 运行结果:
list01.extend((2,3,4)): [1, 2, 3, 4, 5, 6, 2, 3, 4]
list01.extend([5,6,7]): [1, 2, 3, 4, 5, 6, 2, 3, 4, 5, 6, 7]
list01.extend(list02): [1, 2, 3, 4, 5, 6, 2, 3, 4, 5, 6, 7, 'How', 'do', 'you', 'do']

d、index()

def index(self, *args, **kwargs):  # real signature unknown
    """
    Return first index of value.
    Raises ValueError if the value is not present.
    """
    pass
def index(self, *args, **kwargs):  # real signature unknown
    """
    返回第一个值索引。
    如果值不存在,则引发ValueError。
    """
    pass
# example:
list01 = [1, 2, 3, 4, 5, 6]
print('list01.index(2) = {}'.format(list01.index(2)))
# 运行结果:
list01.index(2) = 1

e、insert()

def insert(self, *args, **kwargs):  # real signature unknown
    """ Insert object before index. """
    pass
def insert(self, *args, **kwargs):  # real signature unknown
    """ 在索引之前插入对象。"""
    pass
# example:
list01 = [1, 2, 3, 4, 5, 6]
list01.insert(2,'Kevin')
print("list01.insert(2,'Kevin'): {}".format(list01))
# 运行结果:
list01.insert(2,'Kevin'): [1, 2, 'Kevin', 3, 4, 5, 6]

f、pop()

def pop(self, *args, **kwargs):  # real signature unknown
    """
    Remove and return item at index (default last).
    Raises IndexError if list is empty or index is out of range.
    """
    pass
def pop(self, *args, **kwargs):  # real signature unknown
    """
    删除和返回项目在索引(默认的最后)。
    如果列表为空或索引超出范围,则引发IndexError。
    """
    pass
# example:
list01 = [1, 2, 3, 4, 5, 6]
list01.pop()
print('list01.pop(): {}'.format(list01))
list01.pop(3)
print('list01.pop(3): {}'.format(list01))
# 运行结果:
list01.pop(): [1, 2, 3, 4, 5]
list01.pop(3): [1, 2, 3, 5]

g、remove()

def remove(self, *args, **kwargs):  # real signature unknown
    """
    Remove first occurrence of value.
    Raises ValueError if the value is not present.
    """
    pass
def remove(self, *args, **kwargs):  # real signature unknown
    """
    删除第一个出现的值。
    如果值不存在,则引发ValueError。
    """
    pass
# example:
list01 = [1, 2, 3, 'Kevin', 4, 5, 6]
list01.remove('Kevin')
print("list01.remove('Kevin'): {}".format(list01))
# 运行结果:
list01.remove('Kevin'): [1, 2, 3, 4, 5, 6]

h、reverse()

def reverse(self, *args, **kwargs):  # real signature unknown
    """ Reverse *IN PLACE*. """
    pass
def reverse(self, *args, **kwargs):  # real signature unknown
    """ 反转列表中的元素。 """
    pass
# example:
list01 = [1, 2, 3, 4, 5, 6]
list01.reverse()
print('list01.reverse(): {}'.format(list01))
# 运行结果:
list01.reverse(): [6, 5, 4, 3, 2, 1]

i、sort()

def sort(self, *args, **kwargs):  # real signature unknown
    """ Stable sort *IN PLACE*. """
    pass
def sort(self, *args, **kwargs):  # real signature unknown
    """ 对原列表进行排序。 """
    pass
# example:
list01 = [6, 5, 4, 3, 2, 1]
list01.sort()
print('list01.sort(): {}'.format(list01))
# 运行结果:
list01.sort(): [1, 2, 3, 4, 5, 6]

j、clear()

def clear(self, *args, **kwargs):  # real signature unknown
    """ Remove all items from list. """
    pass
def clear(self, *args, **kwargs):  # real signature unknown
    """ 从列表中删除所有项目。"""
    pass
# example:
list01 = [1, 2, 3, 4, 5, 6]
list01.clear()
print('list01.clear(): {}'.format(list01))
# 运行结果:
list01.clear(): []

k、copy()

def copy(self, *args, **kwargs):  # real signature unknown
    """ Return a shallow copy of the list. """
    pass
def copy(self, *args, **kwargs):  # real signature unknown
    """ 返回列表的浅拷贝。"""
    pass
# example:
list01 = [1, 2, 3, 4, 5, 6]
list02 = list01.copy()
print('list01 = {}'.format(list01))
print('list02 = {}'.format(list02))
print('id(list01) = {}'.format(id(list01)))
print('id(list02) = {}'.format(id(list02)))
# 运行结果:
list01 = [1, 2, 3, 4, 5, 6]
list02 = [1, 2, 3, 4, 5, 6]
id(list01) = 1529877239168
id(list02) = 1529878067648
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 227,533评论 6 531
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 98,055评论 3 414
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 175,365评论 0 373
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 62,561评论 1 307
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 71,346评论 6 404
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 54,889评论 1 321
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 42,978评论 3 439
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 42,118评论 0 286
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 48,637评论 1 333
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 40,558评论 3 354
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 42,739评论 1 369
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 38,246评论 5 355
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 43,980评论 3 346
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 34,362评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 35,619评论 1 280
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 51,347评论 3 390
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 47,702评论 2 370