Python基础入门

原创 2016年05月31日 00:43:10

1.数据类型

(1)整数:与数学上一致,有时为了方便会用十六进制,如0xff00。

(2)浮点数:可以用数学写法,但当数很大或很小时要用科学计数法,如1.23*10^9–>1.23e9。

(3)字符串:用”或”“括起来都行。

(4)布尔类型:and–>两个都是true时为true,or–>有一个为true则为true,not–>true和false互换。Python把0,‘’和null看成false,其他为true。例:

a=true
print a and 'a=T' or 'a=F'

输出结果是:’a=T’。Python的运算机制为一旦遇到可以确定的结果就不会继续计算了,直接返回结果。

2.print语句

(1)向屏幕输入指定的汉字print 'hello world' hello world。

(2)print语句也可接上许多字符串,用逗号隔开,print会依次打印字符串,遇到逗号’,’会输出一个空格print 'The quick brown fox','jumps over','the lazy dog'the quick brown fox jumps over the lazy dog。

(3)print语句也可打印整数或计算结果。

3.注释

以‘#’开头,后面的文字直到行尾都是注释。

4.变量

(1)

a=123
print a
a='imooc'
print a

这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言,如Java。和Java中的String类型一样,Python解释器会在内存中创建一个字符串,再创建一个名为a的变量,并把它指向字符串。

(2)如果字符串本身包含’怎么办,这时我们可以用”“来表示字符串,与之对应,如果字符串本身包含”,则我们用’把字符串括起来。如果字符串中既有’又有”,那我们可以用转义,Python的转义字符为\

'Bob said \"I\'m OK\".'

输出Bob said “I’m OK”.类似的转义有\n表示换行\t表示一个制表符\表示\字符本身。

(3)如果一个字符串中有很多要转义的字符,可以用r”,当字符串有多行时,用r”’…”’表示多行转义字符串。

5.list集合

(1)创建list集合:

>>> L=['michaael','Bob','Tracy']
['michaael','Bob','Tracy']

list是数学意义上的有序集合,也就是说,list中的元素是按照顺序排列的,由于Python是动态语言,所以list中包含的元素并不要求是同一种数据类型,可以放置各种数据。

(2)查找元素:由于list是一个有序集合,所以,我们可以用一个list按索引找到list中的某个元素,如L[0],L[1],L[2] 表示正数1,2,3个元素,索引序号是从0开始的。L[-1],L[-2],L[-3]表示的是倒数第1,2,3个元素。

(3)新增元素:list是用L.append()方法把新的元素追加到list的末尾,如果想改变插入的位置,可以用L.insert(0,’paul’)方法,其作用是把’paul’插入到指定的索引位置(本例中为最前面),后面的所有元素顺序后退一位。

(4)删除元素:L.pop()是删除list的最后一个元素,并且返回这个元素,如果想删除并返回指定位置的值,则在pop()里面加上其对应的索引号。

(5)更新元素:L[2]=’faker’则把原来的list中索引位置为2的元素替换为faker。

6.tuple列表

(1)创建tuple:tuple是另一种有序的列表,tuple和list一旦创建就不可更改

>>>t=('lisa','adam','bart')

创建tuple和list的唯一区别就是用()代替[],但是访问tuple元素是还是用[],如t[1]。其他的如append,insert,pop方法tuple都没有。

(2)单个元素的tuple:当tuple是单个元素时,Python可能会误把()当成优先级来处理,所以当tuple只有一个元素时要在后面加个逗号。t=(1,)。

(3)”可变的tuple”:在创建tuple时,把想改变的那个元素设置为list,这样可以通过得到list元素,然后再改变list元素的值来间接达到改变tuple的值。tuple的不变是指tuple的每个元素,指向永远不变,即指向’a’不能改成指向’b’,但这个指向的对象由于是定义成list所以是可以改变的。如t=(‘a’,’b’,[‘A’,’B’])。

7.dict

(1)什么是dict:dict相当于Java中的map,花括号{}代表这是一个dict,然后按照key:value,写出来即可。

d={
    'Adam':95,
    'Lisa':85,
    'Bart',59
}

一个key-value算一个,可以用len()求dict的长度。

(2)访问dict:两种方法用来访问dict,可以直接用d[‘key’]其返回对应的value的值,如果key不存在,会报错,因此查询之前会先判断key是否存在。

if 'Paul' in d:
    print d['Paul']

第二种是用dict本身的get方法,在key不存在的时候,返回none:

>>>print d.get('Bart')
59
>>>print d.get('Paul')
None

(3)dict的特点:快速查找,无论dict有10个还是10万个元素,查找速度都是一样的,dict的查找速度快是有代价的,dict的缺点是占用内存大,还会浪费很多内容。list则正好相反,占用内存小,但是查找速度慢。还有一个特点是key-value序队是没有顺序的。第三个特点是作为key的元素必须不可变,Python中字符串,整数,浮点数都是不可变的可做key,但是list是可变的,不能作为key。

(4)dict是可变的,我们可以随时往dict中添加新的key-value,如果key已经存在,则赋值会用新的value替换掉原来的value。

(5)遍历dict:

d= {
    'Adam': 95,
    'Lisa': 85,
    'Bart': 59
}
for key in d:
    print key + ':', d[key]

8.set集合

(1)创建set:如果我们仅仅只需要dict的key,不关心key对应的value,set持有一系列元素,这一点和list很像,但是set的元素没有重复,而且是无序的。

>>>s=set(['A',''B','C'])
>>>print s
set(['A','C','B'])

由于set不能包含重复的元素,所以当我们传入包含重复元素的list时set会自动去掉重复的元素。

(2)访问set:由于set是无序的,所以我们没法通过索引来访问,而且由于set中没有key-value键队,故只能另辟蹊径了。我们用'Bill' in s来判断某个元素是否在set集合中,Python会返回true or false来表示返回结果。

(3)set集合的应用:

weekdays = set(['MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT', 'SUN'])
x = '???' # 用户输入的字符串
if x in weekdays:
    print 'input ok'
else:
    print 'input error'

(4)set集合的遍历:

>>> s = set(['Adam', 'Lisa', 'Bart'])
>>> for name in s:
...     print name
... 
Lisa
Adam
Bart

(5)set集合的更新:添加元素时,用set的add()方法,如果添加的元素已经存在于set中,add()不会报错,删除set中的元素时,用set的remove()方法,如果删除的元素不存在set中,remove不会报错,所以要提前检查是否存在,可用in语句。

8.函数

(1)调用函数:Python内置了很多函数。调用一个函数,需要知道函数的名称和参数,如果传入的参数数量和类型有错误的话会报typeerror错误。

(2)常用函数:abs()求绝对值,cmp()比较两个数的大小前面大返回+1,int()把其他数据类型改为整型,str()把其他数据类型改为字符串,∑求和。

(3)编写函数:

def my_abs(x):
if x >= 0:
    return x
else:
    return -x

(4)函数返回多值:

import math
def move(x, y, step, angle):
nx = x + step * math.cos(angle)
ny = y - step * math.sin(angle)
return nx, ny

但其实这只是一种假象,Python函数返回的仍然是单一值,是一个tuple,但是,在语法上,返回一个tuple可以省略括号,而多个变量可以同时接收一个tuple,按位置赋给对应的值,所以,Python的函数返回多值其实就是返回一个tuple,但写起来更方便。

(5)定义默认参数:函数的默认参数的作用是简化调用,定义一个计算x的N次方的函数:

def power(x, n):
s = 1
while n > 0:
    n = n - 1
    s = s * x
return s

假设计算平方的次数最多,我们就可以把n的默认值改为2:

def power(x, n=2):
s = 1
while n > 0:
    n = n - 1
    s = s * x
return s

这样power(5)可直接得出25,由于函数的参数按从左到右的顺序匹配,所以默认参数只能定义在必需参数的后面。

(6)可变参数:def average(args),即可变参数是在参数前面加一个,Python解释器会把传入的一组参数组装成一个tuple传递给可变参数,因此,在函数内部,直接把变量 args 看成一个 tuple 就好了。

9.切片

(1)对list进行切片:L[0:3]表示,从索引0开始取值,知道索引3为止,但不包括索引3。如果第一个索引是0,可以忽略。L[:]表示从头到尾。切片操作还可以指定第三个参数,L[::2]表示隔一个取一个。如果把list换成tuple,切片操作完全相同,只是切片的结果也是tuple。

>>> range(1, 101)
[1, 2, 3, ..., 100]

切片的前两个参数还可以是负数,只是表示倒数第几个。

(2)对字符串切片:

>>> 'ABCDEFG'[:3]
'ABC'
>>> 'ABCDEFG'[-3:]
'EFG'
>>> 'ABCDEFG'[::2]
'ACEG'

字符串有个upper()方法可以把字符串变成大写字母。

range(1,45)生产一个从1到45的list

10.迭代

(1)索引迭代:

>>> L = ['Adam', 'Lisa', 'Bart', 'Paul']
>>> for index, name in enumerate(L):
...     print index, '-', name
... 
0 - Adam
1 - Lisa
2 - Bart
3 - Paul

使用enunerate函数,我们可以在for循环中指定索引index和元素name,实际上enumerate函数b把['Adam', 'Lisa', 'Bart', 'Paul']变成了[(0, 'Adam'), (1, 'Lisa'), (2, 'Bart'), (3, 'Paul')]因此,迭代的每一个元素实际上是一个tuple,相当于:

for t in enumerate(L):
index = t[0]
name = t[1]
print index, '-', name

(2)迭代dict的value:dict 对象有一个 values() 方法,这个方法把dict转换成一个包含所有value的list,这样,我们迭代的就是 dict的每一个 value:

d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
print d.values()
[85, 95, 59]
for v in d.values():
    print v
 85
 95
 59

dict除了values()方法外,还有一个 itervalues() 方法,用 itervalues() 方法替代 values() 方法,迭代效果完全一样:

那这两个方法有何不同之处呢?

  1. values() 方法实际上把一个 dict 转换成了包含 value 的list。

  2. 但是 itervalues() 方法不会转换,它会在迭代过程中依次从 dict 中取出 value,所以 itervalues() 方法比 values() 方法节省了生成 list 所需的内存。

(3)迭代dict的key和value:在一个循环中,同时迭代key和value。

>>> d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
>>> print d.items()
[('Lisa', 85), ('Adam', 95), ('Bart', 59)]
>>> for key, value in d.items():
...     print key, ':', value
... 
Lisa : 85
Adam : 95
Bart : 59

可以看到,items() 方法把dict对象转换成了包含tuple的list,我们对这个list进行迭代,可以同时获得key和value。和 values() 有一个 itervalues() 类似, items() 也有一个对应的 iteritems(),iteritems() 不把dict转换成list,而是在迭代过程中不断给出 tuple,所以, iteritems() 不占用额外的内存。

11.列表生成式

(1)生成列表:如果要生成list[1,2,3,4]可以用range(1,5),如果要生成[1x1,2x2,3x3,4x4]可以用列表生成式。

>>> L = []
>>> for x in range(1, 11):
...    L.append(x * x)
... 
>>> L
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

(2)条件过滤:列表生成式的 for 循环后面还可以加上 if 判断。如果我们只想要偶数的平方,不改动 range()的情况下,可以加上 if 来筛选:

>>> [x * x for x in range(1, 11) if x % 2 == 0]
[4, 16, 36, 64, 100]

(3)多成表达式:for循环可以嵌套,因此,在列表生成式中,也可以用多层 for 循环来生成列表。对于字符串 ‘ABC’ 和 ‘123’,可以使用两层循环,生成全排列:

>>> [m + n for m in 'ABC' for n in '123']
['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']

翻译成循环代码就像下面这样:

L = []
for m in 'ABC':
for n in '123':
    L.append(m + n)
版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

Python从入门到PY交易,基础语法,散记(二)

类的继承:类本身进一步细分成子类的过程,称为继承,比如鸟类是属于动物类,鸟类是动物类的子类 子类拥有父类的所有属性 1.继承的基本格式 > class 类名(父类名): ...

Python学习 - 基础入门(1)

Python学习 - 基础入门(1)1. 第一个程序 hello worldprint("hello world!")注意:python文件名字的后缀是py2.关于注释 在Python中有两...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

python 极速入门

Python极速入门教程(主要提供与C/C++语法不同点)                    &...

Python入门基础(三)

Python 日期和时间Python程序能用很多方式处理日期和时间。转换日期格式是一个常见的例行琐事。Python有一个time and calendar模组可以帮忙。Tick时间间隔是以秒为单位的浮...

python基础

python基础 我们学一个语言往往都是从输入输出开始的,每一次都会输出一个万恶的"hello world",我们学python也是这样。 >>> print 'hello world' hel...

python批量修改指定目录文件名

这小例子只要是说明用python怎么批量修改指定目录的文件名: 记得要把脚本跟修改的文件放在同一个目录下 #encoding:utf-8 import os import sys files = ...

python基础笔记(一)

1、文件操作流程: 1、1打开文件:建立程序与文件的联系 1.1.1读的方式

Python基础语法

一,基本知识 1,不需要预先定义数据类型(此说法值得商榷,姑且这么说吧),这是与其他语言的最大不同(如C,C++,C#,Delphi等) 1 >>> x=12 2 >>> y=13 3 >...

分分钟学会一门语言之Python篇

Python was created by Guido Van Rossum in the early 90s. It is now one of the most popular languages...

python小游戏之一--------猜数字

看了一下python的书,拿个小游戏来练练手,其实就一
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)