zoukankan      html  css  js  c++  java
  • python数据类型(列表List2)

    七、列表操作符

            1.加号

               加号+不仅能用于数字相加、字符连接,还能用于列表的拼接。

    num1=[1,2,3]
    num2=[2,3,4]
    print(num1+num2)   #[1,2,3,2,3,4]
    

      num1+num2的结果是将列表num2中的元素拼接到列表num1的后面,生成了一个新的列表。

           两个不同数据类型的列表也能拼接。

           2.星(乘)号

              星号“*”操作符可以将列表重复指定的次数。

    names=['Jack','Rose','Alx']
    print(names * 3)
    #['Jack', 'Rose', 'Alx', 'Jack', 'Rose', 'Alx', 'Jack', 'Rose', 'Alx']
    

      

    八、列表的切片

           冒号 : 操作符可以对列表执行切片操作。切片操作是利用冒号操作符进行取子集的过程。
           
           语法规则:
               列表名[start:stop:step]
               其中,stop值不被包含在内(即区间前闭后开)。而step默认为1,可以省略。
    letters=['a','b','c','d','e','f','g','h']
    print(letters[0:4])  #['a','b','c','d']
    print(letters[:4])  #['a','b','c','d']
    print(letters[4:])  #['e','f','g','h']
    print(letters[::2])  #['a','c','e','g']
    

      步长还可以取负整数,代表逆序切片。

    letters=['a','b','c','d','e','f','g','h']
    print(letters[::-1])  #['h','g','f','e','d','c','b','a']
    print(letters[::-2])  #['h','f','d','b']
    print(letters[::-9] #['h']

      注意:加:操作符是切片,切片的结果是列表,哪怕只有一个元素;不加:操作符是索引,索引的结果是元素本身。

    letters=['a','b','c','d','e','f','g','h']
    print(letters[-1])   #'h'
    print(letters[-1:])  #['h']
    

           切片运算符放到赋值语句等号左边时可以对多个元素进行更新。

    letters=['a','b','c','d','e','f','g','h']
    letters[1:3]=['hello','world']   #['a','hello','world','d','e','f','g','h']
    letters[:1]=['x','y']   #['x','y','hello','world','d','e','f','g','h']
    letters[:6]='8'  #['8','f','g','h']
    

      

     九、列表常用函数和方法

           1.排序

           当把数值数据存储在列表后,一个常见的需求是对列表中的值进行排序,利用sort()方法可以实现。原列表被修改。

    a = [3, 1, 2, 5, 4, 6]
    a.sort()
    print(a)    #[1, 2, 3, 4, 5, 6]
    

      使用sort()方法后,列表本身被改变了。如果不想改变原始列表,可以使用sorted()函数,并把结果赋值给新的变量。

    nums = [-1, 34, 0.2, -4, 309]
    nums_desc = sorted(nums, reverse=True)   #降序
    print(nums)     #[-1, 34, 0.2, -4, 309]
    print(nums_desc)   #[309, 34, 0.2, -1, -4]
    

      2.翻转

            reverse()方法可以将列表按位置翻转。

    nums=[1, 2, 2, 2, 3, 3, 4, 5]
    nums.reverse()
    print(nums)    #[5, 4, 3, 3, 2, 2, 2, 1]
    

      3.简单统计

            min()与max()函数可以计算列表最小值与最大值。

    nums=[33,2,-19,21,-5]
    print(min(nums))   #求最小值
    print(max(nums))   #求最大值
    

      如果要对出现相同元素计数,可以使用count()方法。

    str1=['b','c','a','d','a','b','d','b']
    print(count('b'))   #3
    

      sum()函数可以对数值列表求和。

    nums=[1, 2, 2, 2, 3, 3, 4, 5]
    print(sum(nums))   #22
    

      

           4.逻辑判断

           如果需要查看列表中是否存在某个元素,可以使用关键字in,结果返回的是逻辑值。

    nums=[33,2,-19,21,-5]
    print(21 in nums)  #True
    print(3 in nums)   #False
    

      很多序列型数据类型都可以使用in来判断,比如先前讲授的字符串,还有后面的元祖、集合等。

           all()与any()函数用于逻辑值列表,all()判别列表所有值是否都为真,全真时返回True,否则返回False;any()用于判别只要任一元素为真,则返回True,否则返回False。
    (值为假:NoneFalse)
    conditions = [True, 0, None]
    print(all(conditions))   #False
    print(any(conditions))   #True
    

      

           如果要比较两个列表是否一致,则可以直接使用两个等号进行逻辑判断。两个列表一致,不仅值要一样,而且顺序也要一样。

    a = [1, 2, 3, 4]
    print(a == [1, 2, 3, 5])    # False
    print(a == [1, 3, 2, 4])    # False
    print(a == [1, 2, 3, 4])    # True
    

             

           5.列表与字符串

           字符串是一系列字符的序列,而列表是一系列值的序列,但一个由字符组成的列表是不同于字符串的。要把一个字符串转换成字符列表,可以用list()函数。

    s='hello'
    print(list(s))   #['h', 'e', 'l', 'l', 'o']
    

      

           在上面的代码中,list()函数将一个字符串分开成一个个字符(字母)。如果要把字符串切分成一个个单词,可以使用split()方法。
    s='hello-world'
    print(s.split('-'))   #['hello', 'world']
    

      

           方法join()的功能与split()方法的功能相反,它接收一个字符串列表,然后把所有元素拼接到一起作为字符串。join()是一个字符串方法,所以必须把join()放到定界符后面来调用,并且传递一个列表作为参数。
    s=['你','是','谁','?']
    print(''.join(s))   #你是谁?
    

      

           6.列表对象与值

           逻辑关系==和is的区别

           Python 里 "==" 是相等运算符,是用来判断两侧对象的值是否相等。 Python 会查找存储在内存中两个对象(数据), 并判断这两个数据是否相等。 "is"运算符称为同一性运算符,Python 会查找两个对象,查看它们是否指向内存中的同一对象,"is" 是判断引用的内存对象是否相同,而不是内存对象存储的数据。

           简而言之:==表示值是否相等;is表示是否是同一个引用。

    #不可变数据类型
    str1='hello,world'
    str2='hello,world'
    print(str1==str2)   #True
    print(str1 is str2)   #True
    
    #可变数据类型
    list1=[1,2,3]
    list2=[1,2,3]
    print(list1==list2)  #True
    print(list1 is list2)  #False
    

      

           7.可变数据类型和不可变数据类型

           python中的不可变数据类型,不允许变量的值发生变化,如果改变了变量的值,相当于是新建了一个对象,而对于相同的值的对象,在内存中则只有一个对象,内部会有一个引用计数来记录有多少个变量引用这个对象。

           可变数据类型,允许变量的值发生变化,即如果对变量进行append、+=等这种操作后,只是改变了变量的值,而不会新建一个对象,变量引用的对象的地址也不会变化,不过对于相同的值的不同对象,在内存中则会存在不同的对象,即每个对象都有自己的地址,相当于内存中对于同值的对象保存了多份,这里不存在引用计数,是实实在在的对象。

           可变对象包括:list,dict,set。不可变对象包括:tuple,string,int,float,bool。这也就是为什么可以通过函数来添加或删除 list, dict 中的元素,而 tuple 不能。虽然 tuple 和 list 形式类似。 另一点,如果你编写的函数引用了一个外部的 dict 数据,在函数内部修改了 dict 的数据,添加也好,删除也好,那么它的也会被更改。但是如果你用某种方式改变了 string , 则会在内存中创建一个新地址来存储这个新 string 对象。 不可变对象是用在不需要变化的地方,以免意外更改而产生意外。

    # 字符串,不可变数据类型
    s1 = 'hello world'
    s2 = 'hello world'
    print(id(s1), id(s2))
    # 8638384 8638384
    print(s1 == s2, s1 is s2)
    # True True
    
    # 列表 可变数据类型
    l1 = [2, True, 3.14]
    l2 = [2, True, 3.14]
    print(id(l1), id(l2))
    # 38330432 40629184
    print(l1 == l2, l1 is l2)
    # True False
    

      

  • 相关阅读:
    spring(三):ApplicationContext
    android Xutils dbutils 注解
    android 录音的断点续传
    android 原生dialog对话框
    android asyncTask 详解
    自定义的dialog
    fragment 添加menu
    android baseApplication 基类
    看项目得到info_freeCsdn-01闪屏页面
    开源项目 github
  • 原文地址:https://www.cnblogs.com/shixiaoxun/p/14365127.html
Copyright © 2011-2022 走看看