zoukankan      html  css  js  c++  java
  • day2-元组 列表-赋值和深浅拷贝

    一 元组

    元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表

    用途:一般情况下用于自己写的程序能存下数据,但是又希望这些数据不会被改变,比如:数据库连接信息等

    1. 定义元组

    >>> tup = ('a','b','c','d')

    2. 访问元组中的元素

    >>> tup = ('a','b','c','d')
    >>> tup
    ('a', 'b', 'c', 'd')
    >>> tup[0]
    'a'
    >>> tup[1]
    'b'
    >>> tup[-1]
    'd'
    View Code

    3. 统计(count(元素)

    >>> tup = ('a','b','c','a','a')
    >>> tup.count('a')
    3

    4. 索引 (index(元素)

    >>> tup = ('a','b','c','a','a')
    >>> tup.index('c')
    2

    小结:

    1. 元组中的数据不可以被修改,不可以添加,不可以删除(除非是元组中嵌套列表或者字典,列表和字典的值是可以修改的)
    2. 元组的获取元素的方式和列表相同,都是通过下标访问,下标值都是从0开始
    3. 由于元组只能读,所以元组只有count和index两个方法
    4. 元组的切片功能和列表一样

    二 列表

    列表是Python最常用的数据类型之一,通过列表可以对数据实现最方便的存储,修改等操作。

    1. 定义列表

    >>> names = [] #定义空列表
    >>> names = ['a','b','c']  #定义一个非空列表

    2. 访问列表中的元素

    >>> names
    ['a', 'b', 'c']
    >>> names[0]
    'a'
    >>> names[1]
    'b'
    >>> names[2]
    'c'
    >>> names[-1]  #还可以倒着取
    'c'

    注:列表中的下标值是从0开始取的

    3. 切片

    >>> names = ['apple','huawei','xiaomi','vivo']
    >>> names[1:3] #取1到3之间的元素,包括1,不包括3
    ['huawei', 'xiaomi'] 
    >>> names[1:-1]  #取1到-1之间的元素,包括1,不包括-1
    ['huawei', 'xiaomi']
    >>> names[0:3]
    ['apple', 'huawei', 'xiaomi']
    >>> names[:3] #从头开始取,0可以省略,效果等同于names[0:3]
    ['apple', 'huawei', 'xiaomi']
    >>> names[2:] #想取到最后一个值,必须不能写-1,只能这么写
    ['xiaomi', 'vivo']
    >>> names[-3:-1]
    ['huawei', 'xiaomi']
    >>> names[-3:]
    ['huawei', 'xiaomi', 'vivo']
    >>> names[0::2] #后面的2表示:每隔一个元素就取一个
    ['apple', 'xiaomi']
    >>> names[::2] #从头开始0可以省略,效果跟上一句一样
    ['apple', 'xiaomi']
    View Code

    切片小结:

    1. 序列始终都是从左向右切片的,不能从右向左
    2. 列表切片时,起始位的元素是包括的,结束位的元素是不包括(又叫顾头不顾尾),最后一个位置表示步长(names[开始位:结束位:步长]
    3. 若果从0位置取值,0可以省略
    4. 想取最后一个值,结束位不能为-1,因为结束位的元素不包括,所以只能留空

    4. 追加(append(元素)

    >>> names
    ['apple', 'huawei', 'xiaomi', 'vivo']
    >>> names.append('oppo')
    >>> names
    ['apple', 'huawei', 'xiaomi', 'vivo', 'oppo']  #'oppo'是新加的元素
    View Code

    5. 插入(insert(下标值,插入的内容)

    >>> names
    ['apple', 'huawei', 'xiaomi', 'vivo', 'oppo']
    >>> names.insert(0,'samsung')  #0表示需要插入的下标值,'samsung'表示插入的内容
    >>> names
    ['samsung', 'apple', 'huawei', 'xiaomi', 'vivo', 'oppo']  #在下标值为0的地方插入'samsung'
    >>> names.insert(4,'neizu')
    >>> names
    ['samsung', 'apple', 'huawei', 'xiaomi', 'neizu', 'vivo', 'oppo']
    View Code

    6. 修改

    >>> names
    ['samsung', 'apple', 'huawei', 'xiaomi', 'neizu', 'vivo', 'oppo']
    >>> names[1] = 'chuizi'
    >>> names
    ['samsung', 'chuizi', 'huawei', 'xiaomi', 'neizu', 'vivo', 'oppo']
    View Code

    注:修改列表中的元素,直接是names[下标值] = 新元素

    7. 拷贝(copy()

    >>> names
    ['samsung', 'chuizi', 'huawei', 'xiaomi', 'neizu', 'vivo', 'oppo']
    >>> names2 = names.copy()
    >>> names2
    ['samsung', 'chuizi', 'huawei', 'xiaomi', 'neizu', 'vivo', 'oppo']
    View Code

    注:这里的copy都是浅copy,只能copy第一层。深浅拷贝的详细信息:python——赋值与深浅拷贝

    8. 删除(del , remove() , pop()

    >>> names
    ['samsung', 'chuizi', 'huawei', 'xiaomi', 'neizu', 'vivo', 'oppo']
    >>> del names[1]  #根据下标值删除元素
    >>> names
    ['samsung', 'huawei', 'xiaomi', 'neizu', 'vivo', 'oppo']
    >>> names.remove('neizu') #根据元素删除
    >>> names
    ['samsung', 'huawei', 'xiaomi', 'vivo', 'oppo']
    >>> names.pop() #删除最后一个
    'oppo'
    >>> names
    ['samsung', 'huawei', 'xiaomi', 'vivo']
    >>> names.pop(0)  #在输入下标值的情况下和del的效果是一样的,则是删掉具体某个元素
    'samsung'
    >>> names
    ['huawei', 'xiaomi', 'vivo']
    >>> del names #删除names这个变量
    >>> names
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    NameError: name 'names' is not defined
    View Code

    9. 扩展(extend()

    >>> names2
    ['samsung', 'chuizi', 'huawei', 'xiaomi', 'neizu', 'vivo', 'oppo']
    >>> names1 = ['a','b','c','d']
    >>> names1.extend(names2)
    >>> names1
    ['a', 'b', 'c', 'd', 'samsung', 'chuizi', 'huawei', 'xiaomi', 'neizu', 'vivo', 'oppo']
    View Code

    注:names2 的列表合并到names1中,但是,names2列表依然存在,如果想删除names2这个变量,则只需del names2即可

    10. 统计(count()

    >>> names1
    ['a', 'b', 'c', 'd', 'samsung', 'chuizi', 'huawei', 'xiaomi', 'neizu', 'vivo', 'oppo']
    >>> names1.insert(5,'a')
    >>> names1
    ['a', 'b', 'c', 'd', 'samsung', 'a', 'chuizi', 'huawei', 'xiaomi', 'neizu', 'vivo', 'oppo']
    >>> names1.count('a') #统计'a'元素的个数
    2
    View Code

    11. 翻转(reverse()

    >>> names1
    ['a', 'b', 'c', 'd', 'samsung', 'a', 'chuizi', 'huawei', 'xiaomi', 'neizu', 'vivo', 'oppo']
    >>> names1.reverse() #将整个列表翻转过来
    >>> names1
    ['oppo', 'vivo', 'neizu', 'xiaomi', 'huawei', 'chuizi', 'a', 'samsung', 'd', 'c', 'b', 'a']
    View Code

    12. 排序(sort()

    >>> names1
    ['oppo', 'vivo', 'neizu', 'xiaomi', 'huawei', 'chuizi', 'a', 'samsung', 'd', 'c', 'b', 'a']
    >>> names1.sort()
    >>> names1
    ['a', 'a', 'b', 'c', 'chuizi', 'd', 'huawei', 'neizu', 'oppo', 'samsung', 'vivo', 'xiaomi']
    View Code

    13. 获取下标值(index('元素')

    >>> names1
    ['a', 'a', 'b', 'c', 'chuizi', 'd', 'huawei', 'neizu', 'oppo', 'samsung', 'vivo', 'xiaomi']
    >>> names1.index('a')
    0
    >>> names1.index('huawei')
    6
    View Code

    14. 清空列表(clear()

    >>> names1
    ['a', 'a', 'b', 'c', 'chuizi', 'd', 'huawei', 'neizu', 'oppo', 'samsung', 'vivo', 'xiaomi']
    >>> names.clear()
    >>> names
    []
    View Code
  • 相关阅读:
    asp.net访问网络路径方法(模拟用户登录)
    C# List使用District去重复数据
    post跨域请求
    Win7 IIS配置 applicationHost.config 错误:无法识别的特性“setProfileEnvironment” 解决方法
    常见 SQL语句使用 增删改查
    wangEditor编辑器中解析html图文信息问题
    jQuery制作table表格布局插件带有列左右拖动效果
    vue 三目运算
    jQuery遍历 filter()方法
    js 的filter()方法
  • 原文地址:https://www.cnblogs.com/Easonlou/p/8124977.html
Copyright © 2011-2022 走看看