python学习--对象类型(num,string,list,dict,tuple,file)

来源:互联网 发布:cygwin linux内核 编辑:程序博客网 时间:2024/06/01 09:31

1.数字num

1.1 > 数字模块,如math,random

>>> import math>>> math.pi3.141592653589793

1.2 //,地板除,返回一个整数,

>>> 10//33

1.3 len()

>>> len(str(2**100))31

1.4 random()

>>> random.shuffle(['i','love','study','python'])>>> print(random.shuffle(['i','love','study','python']))None>>> p=random.shuffle(['i','love','study','python'])>>> print(p)None>>> p=['i','love','study','python']>>> random.shuffle(p)>>> print(p)['python', 'i', 'love', 'study']>>> 
>>> random.randint(1,10)7>>> random.uniform(1,10)8.718241608293088>>> random.randrange(1,10,1)8>>> random.choice([1,2,3,4,5])

1.5 map()
其实,map应用于list生成更加常见。

>>> def add100(x):    return x+100>>> list(map(add100,hh))[111, 112, 133]

1.6 ord() :取数据的整数部分

>>> {ord(x) for x in 'spaam'}{112, 97, 115, 109}
>>> ord('中')20013

2.字符串string,符号’ ‘

2.1 string的不可变性
只能通过生成新的string来改变string的值或者重新定义string。

>>> a='xyz'>>>> a=a+'xyz'>>> print(a)xyzxyz

2.2常见的其中操作
find()/ replace()/ split()/ upper()/ isalpha()

>>> s='school'>>> s.find('ch')1>>> s.replace('ch','t')'stool'>>> line=('i,like,python')>>> line.split(',')['i', 'like', 'python']>>> line=('i like python')>>> line.split(' ')['i', 'like', 'python']>>> line=('I like python!')>>> line.upper()'I LIKE PYTHON!'>>> line.isalpha()False>>> line=('ilikepython')>>> line.isalpha()True

2.3 格式化的高级替代、模块匹配

>>> '%s eggs and %s'%('hens','meat')'hens eggs and meat'>>> '{0} and {1}'.format('chicken','dog')'chicken and dog'>>> import re>>> match=re.match('hello[ ](.*)world','hello python world!')>>> match.group(1)'python '>>> match=re.match('hello[ ](.*)[ ]world','hello python world!')>>> match.group(1)'python'

3、列表list,符号[]

任意类型的有序集合,没有固定的大小。
3.1 list

>>> L=[123,'spark',1.2]>>> L[123, 'spark', 1.2]>>> len(L)3

3.2 列表的增减append、sort、reverse()

>>> L+['hadoop','tensorflow'][123, 'spark', 1.2, 'hadoop', 'tensorflow']
>>> l.append('hadoop')>>> l[-1]'hadoop'>>> l=['apple','pear','food']>>> l.sort()>>> l['apple', 'food', 'pear']>>> l.reverse()>>> l['pear', 'food', 'apple']

3.3把嵌套列表的最后一个元素删除

a=[[1,2,3],[4,5,6],[7,8,9]]print('a',a)# a.pop(a[0][1])# print('a.pop',a)print('a22',a[2][2])a[1].pop()print('a1',a[1])

运行结果

a [[1, 2, 3], [4, 5, 6], [7, 8, 9]]a22 9a1 [4, 5]

3.4 把数据的第一行删除,第一列删除,获得最后一列作为label数据,其他作为train 数据

import csvimport reader from csvX=[]Y=[]#定义空列表,存储训练数据和labelfor item in reader:    if reader.line_num==1:#忽略第一行        continue    X.append(item)for i in range(len(X)):    Y.append(X[i].pop())    X[i].pop(0)print('X',X)print('Y',Y)

3.5关于列表的维度shape

x=[[1,2]]#1*2w=[[1,2,3],[4,5,6]]#2*3xx=tf.matmul(x,w)print(xx)
a=[[1,2,3],[4,5,6],[9,8,7]]x=[[1,2],[2,3],[3,4],[4,5]]#4*2w=[[1,2,3],[4,5,6]]#2*3# b=[[1,2,3],[1,2,3],[1,2,3],[1,2,3]]b=[[1,2,3]]xx=tf.matmul(x,w)with tf.Session() as sess:    print(sess.run(xx))xx=tf.matmul(x,w)+bwith tf.Session() as sess:    print(sess.run(xx))

运行结果:

[[ 9 12 15] [14 19 24] [19 26 33] [24 33 42]]2017-12-22 08:57:32.813057: I C:\tf_\PY\35\tensorflow\core\common_runtimw device (/device:GPU:0) -> (device:01:00.0, compute capability: 3.5)[[10 14 18] [15 21 27] [20 28 36] [25 35 45]]```###4、字典dict,符号{}字典是一种映射,通过键来存储,和列表一样具有可变性

class1={‘name’:’507’,’number’:’26’}

class1[‘name’]
‘507’
class1[‘number’]
‘26’

```name,number都是字典的键。

4.1通过键赋值

>>> class1['number']=27>>> class1['number']27>>> 

4.2重复嵌套

>>> info1={'name':{'first':'rose','last':'fun'}}>>> info1['name']{'first': 'rose', 'last': 'fun'}
>>> car={'size':'large','color':'black','quality':['fine']}>>> car['quality'].append('runfast')>>> car{'size': 'large', 'color': 'black', 'quality': ['fine', 'runfast']}
可以看出,list具有可变性,因为它的内存可以随意增加或减小。

为什么dict查找速度这么快?因为dict的实现原理和查字典是一样的。假设字典包含了1万个汉字,我们要查某一个字,一个办法是把字典从第一页往后翻,直到找到我们想要的字为止,这种方法就是在list中查找元素的方法,list越大,查找越慢。

第二种方法是先在字典的索引表里(比如部首表)查这个字对应的页码,然后直接翻到该页,找到这个字。无论找哪个字,这种查找速度都非常快,不会随着字典大小的增加而变慢。

dict就是第二种实现方式,给定一个名字,比如’Michael’,dict在内部就可以直接计算出Michael对应的存放成绩的“页码”,也就是95这个数字存放的内存地址,直接取出来,所以速度非常快。

你可以猜到,这种key-value存储方式,在放进去的时候,必须根据key算出value的存放位置,这样,取的时候才能根据key直接拿到value。

4.3 dict的get()用法

>>> print(class1.get('address'))None>>> class1.get('address',-9)-9>>> class1.get('number',9)27
若字典含有该键,返回相应值,否则,返回None或者自定义的一个数值。

和list比较,dict有以下2个特点:

查找和插入的速度极快,不会随着key的增加而变慢;
需要占用大量的内存,内存浪费多。

其中,通过key计算位置的算法称为哈希算法(Hash)。

要保证hash的正确性,作为key的对象就不能变。在Python中,字符串、整数等都是不可变的,因此,可以放心地作为key。而list是可变的,就不能作为key

4.3 简单说说set()

set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的keyset可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作:>>> s=set([1,2,3])>>> s{1, 2, 3}>>> s.add(123)>>> s{123, 1, 2, 3}>>> s.pop()123>>> s{3}>>> s.add(256)>>> s{256, 3}>>> s.remove(3)>>> s{256}
>>> ddkey=list(dd.keys())>>> ddkey.sort()>>> for name in ddkey:    print(name,'>',dd[name])peking > 88tsing > 90zju > 89>>> 

5、元组tuple,符号()

元组,就像不可改变的列表。

>>> s=('spark',[1, 2, 3],1.2)>>> s('spark', [1, 2, 3], 1.2)>>> s.count(1.2)1>>> s.index(1.2)2
注:tuple是固定大小的,不支持增减,也就是没有append()、pop()等函数。
>>> s.pop()Traceback (most recent call last):  File "<pyshell#42>", line 1, in <module>    s.pop()AttributeError: 'tuple' object has no attribute 'pop'>>> s=s+(4,5)>>> s('spark', [1, 2, 3], 1.2, 4, 5)

参考:
1、random();
2、字典用法

原创粉丝点击