zoukankan      html  css  js  c++  java
  • python-list和tuple

    一、列表补充

      1、list(iterable)只能是一个参数,并且是可迭代的

      2、' '.join(iterable)  ---->把可迭代的合并成一个字符串

    # 随机产生qq号码:5-10  0不能开头
    import random
    qq = []
    count = 0
    while True:
        ran = random.randint(0,9)
        if count ==0 and ran == 0:
            continue
        qq.append(str(ran))
        count+=1
        if count ==10:
            break
    print(qq)
    b = ''.join(qq)
    print(b)

      3、count的使用

    # count的使用
    list = [1,3,5,7,9,3,2,1,4,7,3,9]
    count = 0
    for i in list:
        if i==3:
            count+=1
    print(count)
    
    
    print(list.count(3))

      4、符号: +    *   []    [:]   in  is  

    list = [1,2,3,4]
    list2 = [1,3,4,6]
    list_add = list+list2
    print(list_add)
    list_c = list*2
    print(list_c)

      5、运算系统的内置函数:sum()  min()  max()  sorted()  cmp()  python3.x中cmp已经不支持了在列表中。

    import random
    numbers = []
    for i in range(10):
        ran = random.randint(1,30)
        numbers.append(ran)
    print(numbers)
    print(sum(numbers))
    
    max_value = max(numbers)
    print(max_value)
    
    min_value = min(numbers)
    print(min_value)
    
    sort =sorted(numbers,reverse=True)
    print(sort)

    注:列表排序:

    系统排序:sorted(list)  ----  返回的就是排序后的结果

         list2 = sorted(list)

    列表自身排序:sort()

         list1.sort()  -----没有返回值,将list1进行排序

         print(list1)        排序好的列表

    降序排列:

    list1=[3,6,9,10,2,4,0]
    list2 = sorted(list1,reverse=True)
    print('方式一:',list2)
    list1.sort(reverse=True)
    print('方式二:',list1)

     -----------------------------------

    补充:python的可变  不可变

      不可变:只要改变变量的值则地址发生改变,则认为此类型是不可变类型

          int   str  float  tuple  bool

      可变:内容发生改变,但是地址没有发生改变,则认为此类型是可变类型

          list  set  dict

    list1 = [2, 3, 5]
    print(list1)
    print(id(list1))
    
    list1.append(8)
    print(list1)
    print(id(list1))
    # [2, 3, 5]
    # 1673370433160
    # [2, 3, 5, 8]
    # 1673370433160
    
    set1 = {4, 7, 0, 2}
    print(id(set1))
    
    set1.add(8)
    print(id(set1))
    # 1673369536104
    # 1673369536104
    
    dict1 = {'a': 1, 'b': 2, 'c': 3}
    print(id(dict1))
    
    dict1.popitem()
    print(id(dict1))
    # 1673369509608
    # 1673369509608

    二、python直接赋值、浅拷贝和深度拷贝解析

    直ji接赋值:其实就是对象的引用

    浅拷贝copy.copy():拷贝父对象,不会拷贝对象内部的子对象

    深度拷贝copy.deepcopy():copy模块的deepcopy方法,完全拷贝父对象和子对象

    1、b=a 赋值引用,a和b都指向同一个对象

    2、b=a.copy() 浅拷贝,a和b是一个独立的对象,但它们的子对象还是指向同一对象

    3、b = copy.deepcopy(a) 深度拷贝,a和b完全拷贝了父对象和子对象,两者完全独立的

    示例:

    import copy
    
    a = ['张三', '里斯', '王五', '赵六', ['a', 'b', 'c']]  # 原始对象
    
    b = a  # 赋值,传对象的引用
    c = copy.copy(a)  # 对象拷贝,浅拷贝
    d = copy.deepcopy(a)  # 对象拷贝,深拷贝
    
    a.append('')  # 修改对象a
    a[4].append('d')  # 修改对象a中的数组对象
    
    print('a=', a)
    print('b=', b)
    print('c=', c)
    print('d=', d)

    三、元组

    1、特点:类似列表,不支持删除、添加、修改

    2、声明:tuple()

    tuple()一旦初始化就不能修改,如果可能,能用tuple代替list就尽量用tuple

    元组中只包含一个元素时,需要在元素后面添加逗号

    tuple=(3,)

    3、元组支持下标和切片

    tuple=(1,2,4,6,8,10)
    
    print(tuple[-1])
    print(tuple[:3])
    print(tuple[::-1])

    4、元组的内置函数

    不支持: 添加 、删除、修改

    支持:

      1》查找:index()  返回第一次找到的位置

      2》统计个数:count()

    tuple1 = (1,4,3,2,6,2)
    print(tuple1.index(2))  # 返回第一次找到的位置
    
    n = tuple1.count(2)
    print(n)

      3》排序:可以使用sorted系统函数排序,但是返回的结果是一个列表

    tuple1 = (1,2,5,7,9)
    list1 = sorted(tuple1)
    tuple1 = tuple(list1)
    print(tuple3)   #升序  ,得到的是一个列表

      4》类型的转换:

        列表---》元组:tuple(list) 得到的是元组类型

        元组----》列表:list(tuple) 得到的是列表

    5、元组可以支持的符号:+   *    []    [:]     in   is

    tuple1 = (1,4,3,2,6,2)
    tuple2 = (2,4,6,8)
    
    new_tuple = tuple1+tuple2
    print(new_tuple)
    
    print(tuple2*2)
    
    # 判断是否在元组中
    print(4 in tuple2)
    print(1 in tuple1)

        注:元组是不允许修改的这里的添加元素其实是一种转化

    import random
    
    tuple1 = (1,)
    list1 = list(tuple1)
    for i in range(10):
        ran = random.randint(1,10)
        list1.append(ran)
    #  将列表转成元组
    tuple2 = tuple(list1)
    print(tuple2)
    一路独行,遇见最好的自己!!!
  • 相关阅读:
    栈和堆的区别【个人总结】
    理解堆与栈
    javacript属性
    Reapeater CommandName ,CommandArgument
    FormsAuthentication.HashPasswordForStoringInConfigFile(str1, str2);
    文件上传处理
    GetJson
    js内置对象
    Debug
    [转]关于一些SPFA的标程
  • 原文地址:https://www.cnblogs.com/rungang/p/11265119.html
Copyright © 2011-2022 走看看