Python基础

         对于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)的方法,方便查看

python 怎么看数据类型 python中查看数据类型_python 怎么看数据类型_02


整数

加法: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

注:%s是字符串,%d是整数, %f是浮点数

字段宽度和精度

>>> '%10f' % pi  #字符宽度 10
'  3.141593'
>>> '%10.2f' % pi #字符宽度10,精度2
'      3.14'
>>> '%.2f' % pi #精度2
'3.14'

可以使用*作为字段宽度或者精度(或者两者都使用*),此时数值会从元组参数中读出:

>>> '%.*s' %(5,'Guido van Rossum')
'Guido'

符号、对齐和0填充

- : 左对齐

+:在转换值之前加上正负号

"":正数之前保留空格

0 :转换值若位数不够用0填充

>>> '%010.2f' % pi
'0000003.14'
>>> '%-10.2f' % pi
'3.14

字符串方法:

find  字符串中查找子字符串

>>> 'With a moo-moo here'.find('moo')
7

join   在队列中添加元素

>>> 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'

lower 返回小写字母

print('Hello'.lower())

replace 返回一个字符串中替换后的字符串

name = 'lolo lala lola'
print(name.replace('lolo','koka'))

split      分割字符串成序列

>>> '1+2+3'.split("+")
['1', '2', '3']

strip      返回去除两侧空格(不包括内部)的字符串

>>> '   hahaha   '.strip()
'hahaha'

translate 可以替换字符创中的某些部分,只能处理单个字符

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

列表

>>> [0,1,2,3,4,5]
[0, 1, 2, 3, 4, 5]

标准操作:

索引[*]、分片[:](含首不含尾)、+、*、in、max、min、赋值、删除元素

>>> ['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]

列表的方法:

append       列表最后附加元素

>>> lst = [1,2,3]
>>> lst.append(4)
>>> lst
[1, 2, 3, 4]

extend         列表最后追加另一个列表

>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a.extend(b)
>>> a
[1, 2, 3, 4, 5, 6]

pop             移除列表中的一个值(默认最后),并返回元素值

>>> a.pop()
3

count          统计某元素出现的次数

>>> ['a','b','c','a'].count('a')
2

index          查找某个值第一个匹配项的索引位置

products = ['Car','Iphone','Coffee','Mac','clothers','Bicyle']
print(products.index('Mac'))

insert          在某元素前插入值

prices = [50000,5000,35,9888,500,1500]
prices.insert(1,500)
print(prices)
[50000, 500, 5000, 35, 9888, 500, 1500]

remove       移除某个值在列表的第一个匹配项

>>> li = [11,22,33,44,55]
>>> li.remove(11)
>>> li
[22, 33, 44, 55]

sort            在原序列进行正向排序,意味着改变原来的列表,从而让其中的元素按顺序排列,而不是简单放回一个已排序的副本而已。

>>> x = [1,3,5,2,6,8]
>>> x.sort()
>>> x
[1, 2, 3, 5, 6, 8]

reverse        反序改变序列,不返回值

>>> x.reverse()
>>> x
[8, 6, 5, 3, 2, 1]

reversed      反向序列并返回一个迭代器

print(list(reversed([1,3,5,4,7])))
[7, 4, 5, 3, 1]

sorted         顺序排列,返回一个正向列表

>>> 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'}

字典的方法:

clear 清除字典中所有的项,无返回值或返回None

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 使用给定的键建立新的字典,每个键默认对应的值为None;可直接调用dict函数

{}.fromkeys(['name','age'])
{'age':'None','name':'None'}

dict.fromkeys(['name','age'])
{'age':None,'name':None}

get 访问字典项的方法,一般来说访问字典中不存在的项时会出错。

d={}
print(d['name'])
error
print(d.get('name'))
None

has_key (python3.5已经没有该功能) 检查字典中是否含有给出的键。可以使用表达式k in d实现.

data = {'name':'koka','age':18}
if 'name' in data:
    print("in")
else:
    print("not in")
in

items 将所有的字典项以列表方式返回。iteritems 返回一个迭代器。

>>> database={'koka':'123','wawa':'456'}
>>> for key,value in database.items():
    print(key,value)
wawa 456
koka 123

pop用来获得对应于给定键的值,将这个键-值对从字典中移除。

data = {'name':'koka','age':18}
name = data.pop('name')
print(name)
koka

popitem 类似与list.pop,后者会弹出列表的最后一个元素。popitem弹出随机的项,可一个接一个的移除项。


setdefault类似于get,能够获得与给定键相关联的值,还能在字典中不含有给定键的情况下设定值。

>>> d = {}
>>> d.setdefault('name','N/A')
'N/A'

update 利用一个字典项更新另一个字典。

data = {'name':'koka','age':18}
adds = {'phone':10010}
data.update(adds)
print(data)
{'phone': 10010, 'name': 'koka', 'age': 18}

keys 返回字典的key值的一个视图(view),而不在是list;iterkeys返回键的迭代器

>>> dct = {'a':1,'b':2}
>>> print(type(dct.keys()))
<class 'dict_keys'>

values 返回字典的value值的一个视图(view),而不在是list;itervalues返回值得迭代器

>>> 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.

dict函数

通过其他映射(比如其他字典)或者(键,值)这样的序列对建立字典。

>>> 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 collectionsvalues = [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)"""