python学习之旅(入门)

时间:2023-03-10 05:19:48
python学习之旅(入门)

一.list 有序集合

1.list 有序集合  L = [95.5, 85, 59]  如L[1] = 85 ,L[-1] = 59  和php中array一个意思  用[] 表示就可以了

2.新增:往list中添加元素 ①.append()   L.append('test')   ②.insert   insert有两个参数  第一个是索引号  第二个是添加的元素,如L.insert(0,'test')

3.删除:删除元素  pop()   删除掉list的最后一个元素,并且返回这个元素。  拿第一条举例,L.pop()就会删除59并且返回59。L.pop(1)就会删除85并且返还85.其中的为1为索引

4.替换:直接L[2] = ‘test’  这样59就被替换成了字符串test

二.tuple 有序列表 类似于list  但是tuple创建完成后不能修改

1.tuple创建用()不同于 list用[].

2.tuple中要用,如t = ('test',)如果不用逗号 t(0) 打印出来的结果就是0而不是test。

3.tuple的不变是指指向不变  t = (1,2,3,[4,5])  ,L= t(3), L[0] = 'test' 这样4就变成了test 。所以tuple的每个元素指向是不变的,即指向1就不能改为指向b

三. if语句

1.python代码缩进规则。具有相同缩进的代码被视为代码块。缩进请严格按照Python的习惯写法:4个空格,不要使用Tab,更不要混合Tab和空格,否则很容易造成因为缩进引起的语法错误。

2.如果你在Python交互环境下敲代码,还要特别留意缩进,并且退出缩进需要多敲一行回车。if 那一行要用:结尾

s = set(['Adam', 'Lisa', 'Paul'])
L = ['Adam', 'Lisa', 'Bart', 'Paul']
for name in L:
if name in s:
s.remove(name)
else:
s.add(name)
print (s)

运行结果就是下面

D:\Python37\MyPython>python test1.py
{'Bart'}

3.if和else

score = 55
if score >= 60:
    print 'passed'
else:
    print 'failed'

4.if elif 和else

if age >= 18:
print 'adult'
elif age >= 6:
print 'teenager'
elif age >= 3:
print 'kid'
else:
print 'baby'

四.for循环

1.循环遍历list或者是tuple

L = ['Adam', 'Lisa', 'Bart']
for name in L:
print name

2.for 循环嵌套

for x in ['A', 'B', 'C']:
for y in ['1', '2', '3']:
print x + y
运行结果为:
A1
A2
A3
B1
B2
B3
C1
C2
C3

五.dict   key=>value的存储方式用{}声明

ex:

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

如果print len(d)  结果就是3   如果 print d('Adam') 得到的结果就是95

1.dict的第一个特点是查找速度快,无论dict有10个元素还是10万个元素,查找速度都一样。而list的查找速度随着元素增加而逐渐下降

2.dict缺点占用内存大,key不能重复

3.dict第二个特点就是没有顺序。打印的顺序不一定使我们创建的顺序。

4.dict的第三个特点是作为key的元素时不可变的。如字符串,整数等等,但是list是可变的就不能作为key。

5.添加: dict是可变的  d['5'] = 99

六.set 创建set的方式是调用set()并传入一个list,list的元素将作为set的元素。set没有重复

ex: s = set(['A','N','C'])  print s 结果可以看出是无序的。  set会自动取出重复的。

1.set储存是无序的,访问set的元素,其实就是判断它是否在set中,这个时候可以用in。ex: ‘A’ in s  返回结果为bool型。

2.set不能识别小写的字。

3.新增 : add  s.add('添加的元素')  新增已经存在的值时,不会报错

4.删除 :   remove  s,remove()        删除不存在的值时会报错

七.函数

1.调用一个函数需要知道函数的名称和参数。

2.定义函数用def 依次是函数名和括号参数和冒号  返回值统一为return

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

没有返回值可直接写return

3.内置函数

abs()函数返回数字的绝对值。

all() 函数用于判断给定的可迭代参数 iterable 中的所有元素是否都为 TRUE,如果是返回 True,否则返回 False。元素除了是 0、空、FALSE 外都算 TRUE。

any() 函数用于判断给定的可迭代参数 iterable 是否全部为 False,则返回 False,如果有一个为 True,则返回 True。元素除了是 0、空、FALSE 外都算 TRUE。

basestring() 方法是 str 和 unicode 的超类(父类),也是抽象类,因此不能被调用和实例化,但可以被用来判断一个对象是否为 str 或者 unicode 的实例,isinstance(obj, basestring) 等价于 isinstance(obj, (str, unicode))。

bin() 返回一个整数 int 或者长整数 long int 的二进制表示。

bool() 函数用于将给定参数转换为布尔类型,如果没有参数,返回 False。bool 是 int 的子类。

bytearray() 方法返回一个新字节数组。这个数组里的元素是可变的,并且每个元素的值范围: 0 <= x < 256。  class bytearray([source[, encoding[, errors]]])

callable() 函数用于检查一个对象是否是可调用的。如果返回True,object仍然可能调用失败;但如果返回False,调用对象ojbect绝对不会成功。对于函数, 方法, lambda 函式, 类, 以及实现了 __call__ 方法的类实例, 它都返回 True。callable(object)

chr() 用一个范围在 range(256)内的(就是0~255)整数作参数,返回一个对应的字符。chr(i)其中i可以为16进制的 print chr(0x30), chr(0x31), chr(0x61) 返回 0 1 a

classmethod 修饰符对应的函数不需要实例化,不需要 self 参数,但第一个参数需要是表示自身类的 cls 参数,可以来调用类的属性,类的方法,实例化对象等。

cmp(x,y) 函数用于比较2个对象,如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。

compile() 函数将一个字符串编译为字节代码。

complex() 函数用于创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数。如果第一个参数为字符串,则不需要指定第二个参数。。

delattr 函数用于删除属性。delattr(x, 'foobar') 相等于 del x.foobar。delattr(object, name) object -- 对象。name -- 必须是对象的属性。

dict() 函数用于创建一个字典。

dir() 函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表。如果参数包含方法__dir__(),该方法将被调用。如果参数不包含__dir__(),该方法将最大限度地收集参数信息。

python divmod() 函数把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b)。

enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

eval() 函数用来执行一个字符串表达式,并返回表达式的值。

execfile() 函数可以用来执行一个文件。

file() 函数用于创建一个 file 对象,它有一个别名叫 open(),更形象一些,它们是内置函数。参数是以字符串的形式传递的。

filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。

float() 函数用于将整数和字符串转换成浮点数。

format() 新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。基本语法是通过 {} 和 : 来代替以前的 % 。 "{1} {0} {1}".format("hello", "world") # 设置指定位置 'world hello world'

frozenset() 返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。

getattr() 函数用于返回一个对象属性值。

globals() 函数会以字典类型返回当前位置的全部全局变量。

hasattr() 函数用于判断对象是否包含对应的属性。

hash() 用于获取取一个对象(字符串或者数值等)的哈希值。

help() 函数用于查看函数或模块用途的详细说明。

hex() 函数用于将10进制整数转换成16进制,以字符串形式表示。

id() 函数用于获取对象的内存地址。

input     Python3.x 中 input() 函数接受一个标准输入数据,返回为 string 类型。

    Python2.x 中 input() 相等于 eval(raw_input(prompt)) ,用来获取控制台的输入。

    raw_input() 将所有输入作为字符串看待,返回字符串类型。而 input() 在对待纯数字输入时具有自己的特性,它返回所输入的数字的类型( int, float )。

注意:input() 和 raw_input() 这两个函数均能接收 字符串 ,但 raw_input() 直接读取控制台的输入(任何类型的输入它都可以接收)。而对于 input() ,它希望能够读取一个合法的 python 表达式,即你输入字符串的时候必须使用引号将它括起来,否则它会引发一个 SyntaxError 。

除非对 input() 有特别需要,否则一般情况下我们都是推荐使用 raw_input() 来与用户交互。

注意:python3 里 input() 默认接收到的是 str 类型。

int() 函数用于将一个字符串或数字转换为整型。class int(x, base=10) base为进制数,默认为十进制

isinstance() 函数来判断一个对象是否是一个已知的类型,类似 type()。

isinstance() 与 type() 区别:

  • type() 不会认为子类是一种父类类型,不考虑继承关系。

  • isinstance() 会认为子类是一种父类类型,考虑继承关系。

如果要判断两个类型是否相同推荐使用 isinstance()。

issubclass() 方法用于判断参数 class 是否是类型参数 classinfo 的子类。

iter() 函数用来生成迭代器。

len() 方法返回对象(字符、列表、元组等)长度或项目个数。

list() 方法用于将元组转换为列表。注:元组与列表是非常类似的,区别在于元组的元素值不能修改,元组是放在括号中,列表是放于方括号中。

locals() 函数会以字典类型返回当前位置的全部局部变量。对于函数, 方法, lambda 函式, 类, 以及实现了 __call__ 方法的类实例, 它都返回 True。

long() 函数将数字或字符串转换为一个长整型。

map() 会根据提供的函数对指定序列做映射。第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。

max() 方法返回给定参数的最大值,参数可以为序列。

memoryview() 函数返回给定参数的内存查看对象(Momory view)。所谓内存查看对象,是指对支持缓冲区协议的数据进行包装,在不需要复制对象基础上允许Python代码访问。

min() 方法返回给定参数的最小值,参数可以为序列。

next() 返回迭代器的下一个项目。

oct() 函数将一个整数转换成8进制字符串。

open() 函数用于打开一个文件,创建一个 file 对象,相关的方法才可以调用它进行读写。

pow() 方法返回 xy(x的y次方) 的值。

import math

math.pow( x, y )

property() 函数的作用是在新式类中返回属性值。

range() 函数可创建一个整数列表,一般用在 for 循环中。

python raw_input() 用来获取控制台的输入。

raw_input() 将所有输入作为字符串看待,返回字符串类型。

注意:input() 和 raw_input() 这两个函数均能接收 字符串 ,但 raw_input() 直接读取控制台的输入(任何类型的输入它都可以接收)。而对于 input() ,它希望能够读取一个合法的 python 表达式,即你输入字符串的时候必须使用引号将它括起来,否则它会引发一个 SyntaxError 。

除非对 input() 有特别需要,否则一般情况下我们都是推荐使用 raw_input() 来与用户交互。

注意:python3 里 input() 默认接收到的是 str 类型。

reduce() 函数会对参数序列中元素进行累积。

函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。

reload() 用于重新载入之前载入的模块。

repr() 函数将对象转化为供解释器读取的形式。

reverse() 函数用于反向列表中元素。

round() 方法返回浮点数x的四舍五入值。

set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。

setattr 函数对应函数 getatt(),用于设置属性值,该属性必须存在。

slice() 函数实现切片对象,主要用在切片操作函数里的参数传递。

sorted() 函数对所有可迭代的对象进行排序操作。

sort 与 sorted 区别:

sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。

list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。

str() 函数将对象转化为适于人阅读的形式。

sum() 方法对系列进行求和计算。

super() 函数是用于调用父类(超类)的一个方法。

  super 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序(MRO)、重复调用(钻石继承)等种种问题。

  MRO 就是类的方法解析顺序表, 其实也就是继承父类方法时的顺序表。

unichr() 函数 和 chr()函数功能基本一样, 只不过是返回 unicode 的字符。

vars() 函数返回对象object的属性和属性值的字典对象。

xrange() 函数用法与 range 完全相同,所不同的是生成的不是一个数组,而是一个生成器。

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

  如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。

__import__() 函数用于动态加载类和函数 。如果一个模块经常变化就可以使用 __import__() 来动态载入。

exec 执行储存在字符串或文件中的Python语句,相比于 eval,exec可以执行更复杂的 Python 代码。

需要说明的是在 Python2 中exec不是函数,而是一个内置语句(statement),但是Python 2中有一个 execfile() 函数。可以理解为 Python 3 把 exec 这个 statement 和 execfile() 函数的功能够整合到一个新的 exec() 函数中去了。

八.list切片

1. L = ['Adam', 'Lisa', 'Bart', 'Paul']     取前三个元素L[0:3]  从索引0开始,取三个。如果第一个索引是0,还可以省略:

2.L[:3]  从索引1开始,取出2个元素出来:L[1:3]

3.只用一个 : ,表示从头到尾:L[:]

4.L[::2]第三个参数表示每N个取一个,上面的 L[::2] 会每两个元素取出一个来,也就是隔一个取一个。