字符串、列表、元组(string, list, tuple)的区别

 

字符串、列表、元组这三个统称为序列(sequence),三者有很多共性,也有自己的特性,本文先介绍如何新建,如何访问,以及如何更新来介绍序列,最后来说明列表和元组的区别

一、如何新建序列并赋值

 1astring = "Hello world"#使用双引号字符串,三引号用于新建多行字符串
 2astring1 = 'hello world'#使用单引号字符串
 3atring2 = """
 4          Today is sunday,
 5          and very hot 
 6         """
 7s = [123, 'abc', 456, 7-9j]
 8list("foo")#使用工厂方法来新建,其输出为['f', 'o', 'o']
 9t = (['xyz', 123], 456, 123.4)#元组用圆括号并表示,列表用方括号表示
10t*2#其输出为(['xyz', 123], 456, 123.4, ['xyz', 123], 456, 123.4)

下面的链接中的字符串,列表,和元组的内建方法很全,建议看哈,我这里不再重复。
http://www.runoob.com/python3/python3-string.html
http://www.runoob.com/python3/python3-list.html
http://www.runoob.com/python3/python3-tuple.html

再补充一下里面没有的:
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中
语法为enumerate(sequence, [start=0])

1f =  ['tables', 'avdfd', 'robot', 'pyramid']
2for i, j  in enumerate(f):
3    print (i,j)
4
5
6seasons = ['Spring', 'Summer', 'Fall', 'Winter']
7list(enumerate(seasons, start=1))       # 小标从 1 开始

其输出为

1          0 tables
2          1 avdfd
3          2 robot
4          3 pyramid
5
6
7[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]

zip() 函数

1a = [1,2,3]
2b = [4,5,6]
3c = [7, 8, 9, 10]
4zipped = zip(a,b)     # 返回一个对象
5list(zipped)  # list() 转换为列表
6
7t = (zip(a,c))  # 元素个数与最短的列表一致
8t
9list(t)
1[(1, 4), (2, 5), (3, 6)]
2
3<zip at 0x25a57d7bbc8>
4
5[(1, 7), (2, 8), (3, 9)]

另一用法 

a = [1,2,3]
b = [4,5,6]
for i ,j in zip(a, b):
    print(i,j)

其输出为

1 4
2 5
3 6

 

二、如何访问列表

三者都可以进行切片操作,顺序访问时从零开始,0,1,2,3,倒序访问从-1开始
-4,-3,-2, -1
sequence[starting_index, ending_index, step]
[:]表示整个序列
[: : -1]表示反序操作
[0:3]/[:3]表示str[0]到[2]含头不含尾
[3:]表示从str[3]到最后

1astring = "Hello world"
2astring[:7] 其输出为'Hello w' 注意空格算一个字符
3t = (['xyz', 123], 456, 123.4)
4t[0][1]#其输出为123,元组的第零个元素是列表,然后再求列表的第一个元素
5s = [123, 'abc', 456, 7-9j]
6s[::-1]#其输出为[(7-9j), 456, 'abc', 123]
7s[:]#其输出为[123, 'abc', 456, (7-9j)]

三、可变类型和不可变类型

字符串和元组是不可变类型,列表是可变类型
比如“abcd”字符串要想改变成bacd必须新建一个对象
而不能再本地直接改,但是列表就可以
因此,排序,替换,添加对字符串和元组来说就是不可能实现的

四、元组和列表很类似,但元组存在的意义是甚麽?

当我们把数据传给一个不了解的API(英文解释为Application Program Interfaces, or APIs, are commonly used to retrieve data from remote websites. Sites like Reddit, Twitter, and Facebook all offer certain data through their APIs. To use an API, you make a request to a remote web server, and retrieve the data you need.)时,可以确保我们的数据不会被修改,当需要需要改时转换成List即可

注意:

1t = (['xyz', 123], 456, 123.4)
2t[0][1] = "789"
3t

输出为

1(['xyz', '789'], 456, 123.4)

在这里元组的第0个元素是列表,而列表是可变的,因此可以进行替换。
总之,元组对象本身是不可变的,但不意味着元组包含的可变对象是不可变的。

下面这个链接是关于字典的知识点,关于字典不再赘述。

http://www.runoob.com/python3/python3-dictionary.html

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值