zoukankan      html  css  js  c++  java
  • (python learn) 6 列表

    列表和元组一样都是序列类型。类似的序列类型还有字符串。那么既然有了元组为什么还要列表呢,因为元组中的元素不可以改变。

    1 >>> t1=('kramer',27,'male')
    2 >>> id(t1)
    3 182894534480
    4 >>> t1[1]=28
    5 Traceback (most recent call last):
    6   File "<stdin>", line 1, in ?
    7 TypeError: object doesn't support item assignment

    当然,你可以像下面这样改变

    1 >>> t1=('kramer',28,'male')
    2 >>> id(t1)
    3 182894608464

    如果这样改,那么t1的地址就会改变。

    但是,元组可以直接改变。

    1 >>> l1=['kramer',27,'male']
    2 >>> id(l1)
    3 182894613008
    4 >>> l1[1]=28
    5 >>> l1
    6 ['kramer', 28, 'male']
    7 >>> id(l1)
    8 182894613008

    好的,这就是元组和列表的不同了,也可以说是列表存在的意义。下面详细了解一下列表。

    列表的定义

    和元组差不多 只不过是用中括号。

    列表的方法

    -取值

    可以通过切片索引

    -添加

    list.append()

    -删除

    del(list[])

    list.remove(list[])

    -修改

    list[]=

    -查找

    var in list

    关于序列类型对象的地址

     1 >>> l1
     2 ['kramer', 28, 'male']
     3 >>> type(l1)
     4 <type 'list'>
     5 >>>
     6 >>>
     7 >>>
     8 >>>
     9 >>>
    10 >>>
    11 >>> id(l1)
    12 182894613008
    13 >>> id(l1[0])
    14 182894599984
    15 >>> id(l1[1])
    16 5279056
    17 >>> id(l1[2])
    18 182894598064

    可见 列表类型的地址和其中各个元素的地址不相关,可见,列表虽然看起来像是c/c++中的数组,但还是不一样的。

     1 >>> t1
     2 ('kramer', 28, 'male')
     3 >>> type(t1)
     4 <type 'tuple'>
     5 >>>
     6 >>>
     7 >>>
     8 >>>
     9 >>>
    10 >>> id(t1[0])
    11 182894599984
    12 >>> id(t1[1])
    13 5279056
    14 >>> id(t1[2])
    15 182894598064

    可见,元组也差不多,其地址和各个元素的地址没什么关系,另外很重要的一点是,我们发现,其中个元素的地址和上列表个元素的地址是一样的。这说明这些序列其实还是引用了相同地址空间中的东西。跟变量差不多。

     1 >>> s1
     2 'kramer27male'
     3 >>> type(s1)
     4 <type 'str'>
     5 >>>
     6 >>>
     7 >>>
     8 >>>
     9 >>>
    10 >>>
    11 >>> id(s1[0])
    12 182894348592
    13 >>> id(s1[1])
    14 182894215056
    15 >>> id(s1[2])
    16 182894428208
    17 >>> 182894348592-182894215056
    18 133536
    19 >>> 182894215056-182894428208
    20 -213152

    这说明了字符串也一样。而且开始我以为字符串中的各个字符存储的位置起码是连着的了吧,可是我们可以看到,也不是这样。

  • 相关阅读:
    HTML 网页创建
    CSS3 opacity
    两数相加的和
    九九乘法表
    Linux下的Makefile初入
    linux 下定义寄存器宏 实现类似于STM32的寄存器操作
    Linux 编译与交叉编译
    linux IMX6 汇编点亮一个LED灯
    Linux基本指令与作用
    C# Task 源代码阅读(2)
  • 原文地址:https://www.cnblogs.com/kramer/p/2956129.html
Copyright © 2011-2022 走看看