python新手入门笔记(五)——列表

python新手入门笔记(五)——列表

组合数据对象

  • 数据除了三大基本类型int、float、complex外,还有组合数据类型,它们的对象称为组合数据对象
  • 一个组合数据对象中可以包含多个成员对象(成员、元素)。
  • 组合对象可作为整体使用,可赋给变量、传入或传出函数,或作为成员构造更大的组合对象,还可取出其中成员单独使用。
  • 重要的组合数据对象有:字符串(str)、列表(list)、元组(tuple)、字典(dict)、集合(set和frozenset)等。

本次主要记录列表(list)

概念

  • 列表是一批成员的顺序组合,格式为a[‘xxx’,‘xxx’,…]

  • 列表成员可以是任意类型对象,包括各种组合数据对象。

  • 列表可以为空,即没有元素,用一对方括号 [ ] 进行表示,称为空表

  • 列表中的每个成员都有确定的位置,这个位置称为下标,与字符串相同。两者区别在于,字符串通过下标确认某个字符位置,而列表通过下标确认某个成员的位置。如:

    a = 'hello'
    print(a[3]) #输出结果为l
    
    b = [1, 2.0, 'hello', [ ], {1, 'a'}, ['aaa'], 1+2j]
    print(b[2]) #输出结果为hello
    
  • 表(对象)可作为变量的值,也可作为函数的实际参数和返回值。程序里可通过变量和函数实现对表对象的操作。如:

    a1 = [1, 'Math', 89.7]
    a2 = ['Beijing', 'Shanghai', 'Tianjin', 'Chongqing']
    b1 = [sin(1.0), cos(1.0), tan(1.0)]
    #将列表对象成员赋值给变量x、y
    x = a1[1] 
    y = a2[0]
    print(a1,a2) #[1, 'Math', 89.7] ['Beijing', 'Shanghai', 'Tianjin', 'Chongqing']
    print(x,y) #Math Beijing
    z = x + y #x,y相加返回一个z
    print(z) #MathBeijing
    

列表和字符串的区别

  • 字符串通过下标确认某个字符位置,而列表通过下标确认某个成员的位置。这部分在前面演示过,不做重复。

  • 在字符串中,其内容不可被改变,而在列表中,其内容可变。即不可变与可变类型。当改变两者的内容,即其value值,字符串的id也会发生改变,而列表的id不变。如以下代码:

    str1 = 'hello'
    print(id(str1)) #str1的地址id是2410226145392
    str2 = str1
    print(id(str2)) #str2的地址id也是2410226145392,这意味着str1和str2在内存空间被分配了同一个地址
    str1 = str1.replace('e', 'w', 1)
    print(str1) #hwllo,此时我们可以看做str1发生了改变
    print(str2) #hello,str2没有发生改变
    print(id(str1)) #再次查看str1的地址id,为2311221879088
    print(id(str2)) #str2的地址id没有改变,为2410226145392
    #上面的变化告诉我们,当我们改变str1,即字符串的value值时,实际上是销毁原字符串的地址id,
    # 同时销毁原来的字符串,在内存空间开辟一块新的地址id,创建新的字符串,
    #而不是上面所说的str1发生了改变,所以说字符串是不可变类型
    
    
    list1 = [1,2,3,45,6]
    print(id(list1)) # list1的地址id是3216674332352
    list2 = list1 
    print(id(list2)) # list2的地址id是3216674332352
    list1.append('dd')
    print(list1) #[1, 2, 3, 45, 6, 'dd']
    print(list2) #[1, 2, 3, 45, 6, 'dd']list1和list2的value都发生了改变
    print(id(list1)) #list1的地址id是3216674332352
    print(id(list2)) #list2的地址id是3216674332352
    # 从上面可以看出,列表在内存空间的地址id改变value的前后没有发生改变
    # 也就是说它是在原来的位置改变自身,并没有销毁自己,所以说列表是可变类型
    

    类似的可变与不可变类型还有以下几种:

  • 可变(mutable):字典型(dictionary)、列表型(list)

  • 不可变(immutable):int、字符串(string)、float、(数值型number)、元组(tuple)

根据可变数据类型与不可变数据类型的概念,只需要在改变value值的同时,使用id()函数查看变量id值是否变化,就可以知道这种数据类型是可变的还是不可变的了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值