python list转字符串_python核心数据类型讲解

python核心数据类型包括数字、字符串、元组、列表、字典、文件、集合

字符串、元组是不可变的,列表、字典是可变的

字符串

字符串是用来记录文本信息的,可以把字符串看作是单个字符组成的序列,其他类型的序列还包括列表和元组。

S 

字符串作为序列也支持加号合并操作

S = 'python'
print(S + 'is very easy') # python is very easy
print(S * 2) # pythonpython

字符串的find方法是对子字符串进行查找,存在的情况下将返回子字符串的索引,不存在的情况下将返回-1,而replace方法将会对全局进行搜索和替换

>>> s = 'abc'
>>> print(s.find('b'))
1
>>> print(s.find('d'))
-1
>>> print(s.replace('ab','de'))
dec
>>>
>>> print(s.upper())
ABC
>>> print(s.isalpha())
True
>>>

字符串大小写转换,upper()方法转大写,lower方法转小写,capitalize()方法把首字母转大写,

title()方法把每个单词的第一个字母大小,其余小写

s = 'aBc'
>>> print(s.upper())
ABC
>>> print(s.lower())
abc
>>>
>>> s = 'www.baidu.com'
>>> print(s.capitalize())
Www.baidu.com
>>> print(s.title())
Www.Baidu.Com
>>>

字符串支持格式化的高级替代操作,可以以一个表达式的形式和一个字符串方法调用形式使用

>>> print('%s like eat %s' % ('I','egg!'))
I like eat egg!
>>> print('{0} like eat {1}'.format('I','egg!'))
I like eat egg!
>>>

列表

列表是一个任意类型的对象的位置相关的有序集合。前面讲到字符串、列表都是序列的一种,两者唯一的区别是字符串不可变,而列表大小是可变的,所以能同样对列表进行索引、切片

>>> L = [123,'PYTHON',1.23]
>>> print(L[0])
123
>>> print(L[2])
1.23
>>> print(L[:-1])
[123, 'PYTHON']
>>> print(L[:])
[123, 'PYTHON', 1.23]
>>> print(L[1:3])
['PYTHON', 1.23]
>>>

列表也可以使用append()方法添加元素,使用pop()方法删除元素,pop()方法不带参数时默认删除最后一个元素,带参数时删除指定索引的元素

>>> L = [123,'PYTHON',1.23]
>>> L.append('java')
>>> print(L)
[123, 'PYTHON', 1.23, 'java']
>>> L.pop(1)
'PYTHON'
>>> print(L)
[123, 1.23, 'java']
>>>

列表虽然没有固定大小,但不允许引用不存在的元素,超出列表末尾之外的引用会导致错误

>>> L = [123,'PYTHON',1.23]
>>> L[11]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range
>>>

嵌套

python核心数据类型的一个优秀的特性是它可以支持任意的嵌套,例如:一个列表包含一个字典,并在这个字典中包含另一个列表;python中的多维数组,一个嵌套列表的列表可以完成基本操作

>>> M = [[1,2,3],[4,5,6],[7,8,9]]
>>> print(M[1])
[4, 5, 6]
>>> print(M[1][2])
6
>>>

列表解析

列表解析能够处理矩阵这样结构的强大工具,矩阵是按照行进行存储的,所以通过简单的索引即可获取行,使用列表解析可以获取列,下面例子是获取第三列

>>> M = [[1,2,3],[4,5,6],[7,8,9]]
>>> colum2 = [row[2] for row in M]
>>> print(colum2)
[3, 6, 9]
>>>

列表解析源自集合的概念,它是一种通过对序列中的每一项运行一个表达式来创建一个新列表的方法,

>>> M = [[1,2,3],[4,5,6],[7,8,9]]
>>> c = [row[2] + 1 for row in M]
>>> print(c)
[4, 7, 10]
>>> c = [row[2] for row in M if row[2] % 2 ==0] #取第二列中为偶数的元素
>>> print(c)
[6]
>>>
>>> diag = [M[i][i] for i in [0,1,2]]  #取对角线元素
>>> print(diag)
[1, 5, 9]
>>>

括号中的解析语法也可以用来创建产生所需结果的生成器

>>> M = [[1,2,3],[4,5,6],[7,8,9]]
>>> G = (sum(row) for row in M)
>>> print(next(G))
6
>>> print(next(G))
15
>>> print(next(G))
24
>>>

内置函数map也可以做类似的事情,产生对各项运行一个函数的结果,在python3中,将其包装到列表中,会使其返回所有值

>>> M = [[1,2,3],[4,5,6],[7,8,9]]
>>> print(list(map(sum,M)))
[6, 15, 24]
>>>

在python3中,解析语法也可以用来创建集合和字典

>>> M = [[1,2,3],[4,5,6],[7,8,9]]
>>> G = {sum(row) for row in M}
>>> print(G)
{24, 6, 15}

>>> F = {i : sum(M[i]) for i in range(3)}
>>> print(F)
{0: 6, 1: 15, 2: 24}
>>>

字典

字典通俗的理解就是key-value 关系,通过key值找对应的value,内置的sorted函数可以对字典的key排序,

>>> dic = {'a':2,'c':1,'b':3}
>>> for key in sorted(dic):
...
...     print(key,'=>',dic[key])
...
a => 2
b => 3
c => 1
>>>

获取不存在的键会出现错误,但可以通过if进行测试判断

>>> dic = {'a':2,'c':1,'b':3}
>>> print(dic['d'])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'd'
>>>

>>> dic = {'a':2,'c':1,'b':3}
>>> if 'd' not in dic:
...     print("missing")
...
missing

{'a': 2, 'c': 1, 'b': 3}
>>> value = dic['d'] if 'd' in dic else 0
>>> print(value)
0
>>>

>>> value = dic['b'] if 'b' in dic else 0
>>> print(value)
3
>>>

sort 与sorted区别 sort会改变原来的,而sorted不会改变原来的,相当于新建了一个

>>> list = [0,3,5,-1,4,6]
>>> list.sort()
>>> print(list)
[-1, 0, 3, 4, 5, 6]

>>> list = [0,3,5,-1,4,6]
>>> sorted(list)
[-1, 0, 3, 4, 5, 6]
>>> print(list)
[0, 3, 5, -1, 4, 6]

基于key值的排序

>>> list = [(2,'bob',88),(4,'mary',99),(1,'make',77)]
>>> list.sort()
>>> print(list)
[(1, 'make', 77), (2, 'bob', 88), (4, 'mary', 99)]
>>> list = [(2,'bob',88),(4,'mary',99),(1,'make',77)]
>>> list.sort(key = lambda x:x[2])
>>> print(list)
[(1, 'make', 77), (2, 'bob', 88), (4, 'mary', 99)]

reverse=False为升序排序;reverse=True为降序排序

>>> list = [0,3,5,-1,4,6]
>>> list.sort(reverse=False)
>>> print(list)
[-1, 0, 3, 4, 5, 6]
>>> list.sort(reverse=True)
>>> print(list)
[6, 5, 4, 3, 0, -1]
>>>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值