python学习笔记二 数据类型(基础篇)
Python基础
对于Python,一切事物都是对象,对象基于类创建
不同类型的类可以创造出字符串,数字,列表这样的对象,比如"koka"、24、['北京', '上海', '深圳']
数据类型
1、如何查找数据类型支持的方法
python终端:
name=”koka“ type(name) <class 'str'>
help(str) #即可显示所有字符串支持的方法
或者
dir(name) #也可以显示对象中的所有特性。
使用Pycharm:
在py文件中输入int或str,选中输入的关键字,按住Ctrl等鼠标变成手指标识,左键单击即可到你想查找的类方法介绍
选中int后按如下操作可以在pycharm的左侧显示int(object)的方法,方便查看
整数
加法:x.__add__(y) <==> x+y
>>> x=3 >>> y=5 >>> x.__add__(y) 8 >>> x+y 8
abs : 求绝对值,x.__abs__() <==> abs(x)
>>> x=-3 >>> abs(x) 3 >>> x.__abs__() 3
divmod:相除,得到商和余数组成的元组 x.__divmod__(y) <==> divmod(x, y) #在网页分页操作中使用。
>>> total = 95 >>> pager = 10 >>> total.__divmod__(pager) (9, 5)
>>> divmod(total,pager)
(9, 5)
字符串
>>> name = "koka" >>> print("hello %s" %name) hello koka
>>> '%10f' % pi #字符宽度 10
' 3.141593'
>>> '%10.2f' % pi #字符宽度10,精度2
' 3.14'
>>> '%.2f' % pi #精度2
'3.14'
>>> '%.*s' %(5,'Guido van Rossum')
'Guido'
>>> '%010.2f' % pi
'0000003.14'
>>> '%-10.2f' % pi
'3.14
>>> 'With a moo-moo here'.find('moo')
7
>>> seq = [1,2,3,4,5]
>>> sep = '+'
>>> sep.join(seq)
Traceback (most recent call last):
File "<pyshell#26>", line 1, in <module>
sep.join(seq)
TypeError: sequence item 0: expected str instance, int found
>>> seq = ['1','2','3']
>>> sep = '+'
>>> sep.join(seq)
'1+2+3'
print('Hello'.lower())
name = 'lolo lala lola' print(name.replace('lolo','koka'))
>>> '1+2+3'.split("+")
['1', '2', '3']
>>> ' hahaha '.strip()
'hahaha'
capitalize 首字母变大写
>>> name = "python" >>> name.capitalize() 'Python'
in or __contain__ 包含
>>> name = "python" >>> name.capitalize() 'Python' >>> name.__contains__('th') True
startswith 和 endswith 以xx开头或xx结尾
>>> name = "Gumby" >>> name.endswith('Gumby') True >>> name = "Mr.Gumby" >>> name.startswith('Mr.') True
ljust,center,rjust 左对齐,居中,右对齐
>>> print(''.ljust(35,'='))
===================================
>>> print("Shopping List:".center(35,"*"))
***********Shopping List:**********
>>> print(''.rjust(35,'='))
===================================
count 统计字符出现次数
>>> abc = 'asdadqweqjkhwjgfawgdklawda' >>> abc.count('a') 5 >>> abc.count('a',0,5) 2
encode 编码
>>> name = "下载" >>> result = name.encode('gbk') >>> print(result) b'\xcf\xc2\xd4\xd8'
format 格式化字符串
>>> s = "i am {0},age {1}"
>>> print(s.format('Tang',18))
i am Tang,age 18 >>> s = 'i am {name},age {age}'
>>> print(s.format(name="Tang",age=18))
i am Tang,age 18
更多字符串format的使用参考:http://blog.csdn.net/handsomekang/article/details/9183303
列表
>>> [0,1,2,3,4,5]
[0, 1, 2, 3, 4, 5]
>>> ['th'] * 10
['th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th']
>>> 0 in [0,1,2,3,4,5]
True
>>> num = [0,1,2,3,4,5]
>>> num[:]
[0, 1, 2, 3, 4, 5]
>>> num[0:3]
[0, 1, 2]
>>> lst = [1,2,3]
>>> lst.append(4)
>>> lst
[1, 2, 3, 4]
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a.extend(b)
>>> a
[1, 2, 3, 4, 5, 6]
>>> a.pop()
3
>>> ['a','b','c','a'].count('a')
2
products = ['Car','Iphone','Coffee','Mac','clothers','Bicyle'] print(products.index('Mac'))
prices = [50000,5000,35,9888,500,1500] prices.insert(1,500) print(prices) [50000, 500, 5000, 35, 9888, 500, 1500]
>>> li = [11,22,33,44,55]
>>> li.remove(11)
>>> li
[22, 33, 44, 55]
>>> x = [1,3,5,2,6,8]
>>> x.sort()
>>> x
[1, 2, 3, 5, 6, 8]
>>> x.reverse()
>>> x
[8, 6, 5, 3, 2, 1]
print(list(reversed([1,3,5,4,7]))) [7, 4, 5, 3, 1]
>>> y = sorted(x)
>>> y
[1, 2, 3, 5, 6, 8]
' '.join(list)
元组
元组不可以改变,元组下的元素是可以改变的。
>>> tu.remove(11)
Traceback (most recent call last):
File "<pyshell#14>", line 1, in <module>
tu.remove(11)
AttributeError: 'tuple' object has no attribute 'remove'
>>>
>>> tu = (11,[22,33],"haha",44) >>> tu[1][0]=11 >>> tu (11, [11, 33], 'haha', 44)
count 统计出现次数
>>> tu = (11,22,33,44) >>> tu.count(11) 1
index 查找元素出现的位置
>>> tu.index(22) 1 >>> tu.index(33) 2
字典
{'key':'value'}
copy 返回一个具有相同键值对的新字典(这个方法实现的是浅复制,因为值本身就是相同,而不是副本。)
>>> x ={'username':'koka','sx':['it','js',12345]}
>>> y = x.copy()
>>> y['username'] = 'akok'
>>> y['sx'].remove('it')
>>> y
{'username': 'akok', 'sx': ['js', 12345]}
>>> x
{'username': 'koka', 'sx': ['js', 12345]}
{}.fromkeys(['name','age'])
{'age':'None','name':'None'}
dict.fromkeys(['name','age'])
{'age':None,'name':None}
d={}
print(d['name'])
error
print(d.get('name'))
None
data = {'name':'koka','age':18} if 'name' in data: print("in") else: print("not in")
in
>>> database={'koka':'123','wawa':'456'}
>>> for key,value in database.items():
print(key,value)
wawa 456
koka 123
data = {'name':'koka','age':18} name = data.pop('name') print(name) koka
setdefault类似于get,能够获得与给定键相关联的值,还能在字典中不含有给定键的情况下设定值。
>>> d = {}
>>> d.setdefault('name','N/A')
'N/A'
data = {'name':'koka','age':18} adds = {'phone':10010} data.update(adds) print(data) {'phone': 10010, 'name': 'koka', 'age': 18}
>>> dct = {'a':1,'b':2}
>>> print(type(dct.keys()))
<class 'dict_keys'>
>>> d={}
>>> d[1]=1
>>> d[2]=2
>>> d[1]=1
>>> d.values()
dict_values([1, 2])
>>> print(type(d.values()))
<class 'dict_values'
>>> phonebook={'tr':'1234'}
>>> print("tr's phone number is %(tr)s." %phonebook)
tr's phone number is 1234.
>>> items=[('name','koka'),('age',18)]
>>> d=dict(items)
>>> d['name']
'koka'
dict函数也可以通过关键字参数来创建字典
>>> d = dict(name='koka',age=18)
>>> d
{'name': 'koka', 'age': 18}
练习:元素分类
有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。
即: {'k1': 大于66 , 'k2': 小于66}
a = [11,22,33,44,55,66,77,88,99] b = {} for item in a: if item >= 66: if 'k1' in b: b['k1'].append(item) else: b['k1'] = [item,] else: if 'k2' in b: b['k2'].append(item) else: b['k2'] = [item,] print(b) """ for i in a: if i >=66: b.setdefault('k1',[]).append(i) else: b.setdefault('k2',[]).append(i) print(b) """
"""
import collections
values = [11, 22, 33,44,55,66,77,88,99]
newvalues = collections.defaultdict(list)
for i in values:
if i >= 66:
newvalues['k1'].append(i)
else:
newvalues['k2'].append(i)
print(newvalues)
"""