您的位置:首页 > 编程语言 > Python开发

Python基础——原生数据类型(字典,列表,元组,字符串)

2017-12-04 20:38 1401 查看

字典Dictionary

字典定义了键值对的1对1管理。

1、定义字典

请看下面的栗子,我们先创建了一个具有两个元素的字典,每对都是key:value的形式。

我们能通过key得到value,但是不能通过value得到key。

还可以通过get方法得到对应key的value。

d={'server':'mpilgrim','database':'master'}
d

{'database': 'master', 'server': 'mpilgrim'}

d['server']

'mpilgrim'

d['database']

'master'

d.get('server')

'mpilgrim'

2、修改字典

字典中的key是不能重复的,当添加一个新的value到对应的key时,将会抹除之前的value。

我们可以直接给字典指定一个key-value,直接赋值就好了,一个新的key可以添加到字典中。

随时可以给字典添加内容。

d['database']='pubs'
d

{'database': 'pubs', 'server': 'mpilgrim'}

d['uid']='sa'
d

{'database': 'pubs', 'server': 'mpilgrim', 'uid': 'sa'}

d.keys()

dict_keys(['server', 'database', 'uid'])

d.items()

dict_items([('server', 'mpilgrim'), ('database', 'pubs'), ('uid', 'sa')])

需要注意的是,字典是无序的,我们最后插入的key-value不一定在输出的时候排在最后。

另外,字典的key是大小写敏感的,请注意。

d={}
d['key']='value'
d['Key']='other value'
d

{'Key': 'other value', 'key': 'value'}

字典中的value的类型是不固定的,可以是字符串,整形或者其他类型。

d['retrycount']=3
d

{'Key': 'other value', 'key': 'value', 'retrycount': 3}

3、删除item

del命令可以删除字典中指定key的元素。

clear命令可以删除字典中的所有元素。

pop命令也可以删除指定元素。

del d['Key']
d

{'key': 'value', 'retrycount': 3}

d.clear()
d

{}

d['try']='hello'
d.pop('try')
d

{}

列表List

list是python的主力数据类型。

1、定义列表

列表中的定位,0是第一个。

定位为正的话,是正序的,从前向后数。

定位值为负的话,是逆序的,从后向前数。

li[-n]==li[len(li)-n]

li=['a','b','mpilgrim','z','example']
li

['a', 'b', 'mpilgrim', 'z', 'example']

li[0]

'a'

li[4]

'example'

li[-1]

'example'

li[-3]

'mpilgrim'

列表切片

指定前后位置的情况

li[1:3]#不包括最后一位

['b', 'mpilgrim']

li[1:-1]#不包括最后一位

['b', 'mpilgrim', 'z']

li[0:3]#不包括最后一位

['a', 'b', 'mpilgrim']

不指定前后位置,或者只指定一个位置

li[:3]#从第一位到第三,不包括坐标为3的元素

['a', 'b', 'mpilgrim']

li[3:]#从坐标为3的元素,直到最后一位

['z', 'example']

li[:]#不指定前后位置,默认选取所有元素

['a', 'b', 'mpilgrim', 'z', 'example']

2、给列表添加元素

append方法能添加一个元素到列表尾部。

insert方法可以在指定坐标处,添加一个元素。

extend可以在尾部添加一组元素,一个list。

li.append('new')
li

['a', 'b', 'mpilgrim', 'z', 'example', 'new', 'new']

li.insert(2,'new')
li

['a', 'b', 'new', 'new', 'mpilgrim', 'z', 'example', 'new', 'new']

li.extend(['two','elements'])
li

['a',
'b',
'new',
'new',
'mpilgrim',
'z',
'example',
'new',
'new',
'two',
'elements']

我们举例子说一下append和extend的区别。

T=['a','b','c']
T.extend(['d','e','f'])
T

['a', 'b', 'c', 'd', 'e', 'f']

len(T)

6

T=['a','b','c']
T.append(['d','e','f'])
T

['a', 'b', 'c', ['d', 'e', 'f']]

len(T)

4

3、搜索列表

index方法可以获取对应元素的坐标。

in方法可以判断列表中是否存在某个元素。

T

['a', 'b', 'c', ['d', 'e', 'f']]

T.index('a')

0

T.index('c')

2

'd' in T

False

4、删除元素

remove方法删除指定元素

pop方法,删除列表中最后一个元素

li=['a','b','new','baidu','two','new','element']
li

['a', 'b', 'new', 'baidu', 'two', 'new', 'element']

li.remove('baidu')
li

['a', 'b', 'new', 'two', 'new', 'element']

li.pop()

'element'

li

['a', 'b', 'new', 'two', 'new']

5、列表操作

li=['a','b','baidu']
li=li+['example','new']

li

['a', 'b', 'baidu', 'example', 'new']

li+=['two']
li

['a', 'b', 'baidu', 'example', 'new', 'two']

li=[1,2]*3
li

[1, 2, 1, 2, 1, 2]

一次指定多个变量值

v=('a','b','e')
(x,y,z)=v

x

'a'

y

'b'

z

'e'

(MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY)=range(7)

MONDAY

0

格式化字符串

Python支持将值格式化成字符串,我们简单的来讲一下。

%s可以表示字符串

%d可以表示数字

%f可以表示浮点数

k='uid'
v='sa'
"%s=%s" % (k,v)

'uid=sa'

uid='sa'
pwd='secret'
print(pwd+' is not a good password for '+uid)

secret is not a good password for sa

print('%s is not a good password for %s' %(pwd,uid))

secret is not a good password for sa

userCount=6
print('Users connected: %d' % (userCount))

Users connected: 6

print('Users connected: '+userCount)

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

TypeError                                 Traceback (most recent call last)

<ipython-input-5-adf6ef102961> in <module>()
----> 1 print('Users connected: '+userCount)

TypeError: Can't convert 'int' object to str implicitly

print("Today's stock price: %f" % 50.4625)

Today's stock price: 50.462500

print("Today's stock price: %.2f" % 50.4625)

Today's stock price: 50.46

print("change since yesterday: %+.2f" % 1.5)#+号表示需要输出数字的符号

change since yesterday: +1.50

列表映射mapping list

这大概是python中最具有威力的特征了,可以对列表有很好的理解。

列表表达式

li=[1,9,8,4]
[ele*2 for ele in li]#输出一个新的列表,从旧的列表中得到元素

[2, 18, 16, 8]

params={'server':'mpilgrim','database':'master','uid':'sa','pwd':'secret'}
params.keys()#可以从字典中获取列表,或者相互转化

dict_keys(['uid', 'server', 'database', 'pwd'])

params.values()

dict_values(['sa', 'mpilgrim', 'master', 'secret'])

params.items()

dict_items([('uid', 'sa'), ('server', 'mpilgrim'), ('database', 'master'), ('pwd', 'secret')])

[k for k,v in params.items()]

['uid', 'server', 'database', 'pwd']

[v for k,v in params.items()]

['sa', 'mpilgrim', 'master', 'secret']

['%s=%s' % (k,v) for k,v in params.items()]

['uid=sa', 'server=mpilgrim', 'database=master', 'pwd=secret']

链接列表和分隔字符串

我们可以使用join命令很简单的将字符串链接起来,但是不能链接非字符串格式的内容。

使用split命令分隔字符串,又得到一个列表。

';'.join(['%s=%s' % (k,v) for k,v in params.items()])

'uid=sa;server=mpilgrim;database=master;pwd=secret'

s=';'.join(['%s=%s' % (k,v) for k,v in params.items()])
s.split(';')

['uid=sa', 'server=mpilgrim', 'database=master', 'pwd=secret']

元组这里我们没有讲,tuple和列表的形式差不多,但是元组一旦建立,则不能改变。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐