Python列表定义:按特定顺序排列的元素组成。在Python中,用方括号[]来表示列表,并用逗号来分隔其中的元素。Python列表是编程中很常见的数据类型 。
列表是一种可修改的集合类型,其元素可以是数字、string等基本类型,也可以是列表、元组、字典等集合对象,甚至可以是自定义的类型。其定义方式如下:>>> nums = [1,2,3,4]>>> type(nums)>>> print nums[1, 2, 3, 4]>>> strs = ["hello","world"]>>> print strs['hello', 'world']>>> lst = [1,"hello",False,nums,strs]>>> type(lst)>>> print lst[1, 'hello', False, [1, 2, 3, 4], ['hello', 'world']]
下面我们来看一下列表中有哪些常见的方法:count():统计某个元素在列表中出现的次数。index():从列表中找出某个值第一个匹配项的索引位置。append():在列表末尾添加新对象。extend():在列表末尾一次性追加另一个序列的多个值。insert():在列表的指定位置插入对象。pop():移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。remove():移除列表中某个值的第一个匹配项。reverse():将列表中的元素反向,不重新拷贝一个列表。reversed():将列表中的元素反向,重新拷贝一个列表。sort():将列表中的元素排序,不重新拷贝一个列表。sortd():将列表中的元素排序,重新拷贝一个列表。copy():浅拷贝,只是给原来的列表贴上了一个新标签,对于一个复杂对象的子对象并不会完全复制,如果有子列表,改变原来的值,新的拷贝对象也会改变。deepcopy():深拷贝,将复杂对象的每一层复制一个单独的个体出来。就是完全拷贝。常见内置函数:max()、min()、sum()、len()、all()、any()、zip()、enumerate()
class A:
def __init__(self):
pass
a1=a2=a3=a4=A()
instances_of_A = []
for value in globals().values():
if isinstance(value,A):
instances_of_A.append(value)
#instances_of_A is a list containing all instances of A in global scope.
1、添加元素
添加元素使用列表的内置方法append
number = [1, 2, 3, 4]
number.append(5) # number = [1, 2, 3, 4, 5]
number.append([6,7]) # number = [1, 2, 3, 4, 5, [6, 7]]
number.append({'a':'b'}) # number = [1, 2, 3, 4, [6, 7], {'a', :'b'}
可以看到强大的python列表可以嵌套任意类型
2、列表相加
要想连接两个列表,可以使用+号连接
a = [1, 2, 3]
b = [4, 5, 6]
c = a + b # c = [1, 2, 3, 4, 5, 6]
也可以使用列表内置方法extend连接两个列表
a = [1, 2, 3]
b = [4, 5, 6]
a.extend(b) # a = [1, 2, 3, 4, 5, 6]
用+号会创建一个新通对象,使用extend则在原来的对象上面修改
3、列表去重复
列表本身没有去除重复的功能,但是可以借助python的另外一个类型set(help(set)查看)
a = [1, 2, 3, 3,2, 1]
b = list(set(a)) # b = [1, 2, 3]
也可以借助字典类型的内置方法
a = [1, 2, 2, 3, 1, 3]
b = {}.fromkeys(a).keys() # b = [1, 2, 3]
一些常用的方法1. 逆转字符串的三种方法1.1. 模拟C++中方法, 定义一个空字符串来实现 通过设置一个空字符串, 然后讲参数中的字符串从后往前遍历, 使用字符串的加法合并为新的字符串 复制代码 代码如下:def reverse(text) : str = '' index = len(text) - 1 while index >= 0 : str += text[index] index -= 1 return str1.2. 使用切片法 这个是Python中的一个特性, 切片可以取负值,这是采用切片的方法,设置步长为-1,这样就实现了反过来排序。
复制代码 代码如下:def reverse_1(text) : return text[::-1]1.3. 使用列表 采用列表的reverse方法,先将text转换为列表,然后通过reverse方法反转,然后在通过join连接为字符串。复制代码 代码如下:def reverse_2(text) : temp = list(text) temp.reverse() return ''.join(temp)2. 使用reduce 使用匿名函数和reduce() 复制代码 代码如下:def reverse_3(text) : return reduce(lambda x, y : y + x, text) print reverse_3("Hello")3. 遍历字典的四种方法 复制代码 代码如下:dict={"a":"apple","b":"banana","o":"orange"} print "##########dict######################" for i in dict: print "dict[%s]=" % i,dict[i] print "###########items#####################" for (k,v) in dict.items(): print "dict[%s]=" % k,v print "###########iteritems#################" for k,v in dict.iteritems(): print "dict[%s]=" % k,v print "###########iterkeys,itervalues#######" for k,v in zip(dict.iterkeys(),dict.itervalues()): print "dict[%s]=" % k,v4. 遍历list的三种方法 复制代码 代码如下:for key in lst : print key for i in range(len(lst)) : print lst[i] for index, key in enumerate(lst) : print key //index是list的索引5. 字典排序的方法 字典按照value的值从大到小的顺序来排序(默认从小到排序)。
复制代码 代码如下:dic = {'a':31, 'bc':5, 'c':3, 'asd':4, 'aa':74, 'd':0} dict= sorted(dic.iteritems(), key=lambda d:d[1], reverse = True) print dict//输出的结果:[('aa', 74), ('a', 31), ('bc', 5), ('asd', 4), ('c', 3), ('d', 0)] 下面我们分解下代码 print dic.iteritems() 得到[(键,值)]的列表。然后用sorted方法,通过key这个参数,指定排序是按照value,也就是第一个元素d[1的值来排序。
reverse = True表示是需要翻转的,默认是从小到大,翻转的话,那就是从大到小。对字典按键(key)排序:复制代码 代码如下:dic = {'a':31, 'bc':5, 'c':3, 'asd':4, 'aa':74, 'd':0} dict= sorted(dic.iteritems(), key=lambda d:d[0]) # d[0]表示字典的键 print dict#sorted中第三个可选参数为reverse, True表示从大到小排序#默认reverse = False6. 子类和父类 子类构造函数调用父类的初始化构造函数 复制代码 代码如下:class A(object) : def __init__(self) : print "testA class B(A) : def __init__(self) : A.__init__(self) 子类调用父类的同名函数 复制代码 代码如下:super().fuleifunction()7. 更灵活的参数传递方式 复制代码 代码如下:func2(a=1, b=2, c=3) #默认参数 func3(*args) #接受任意数量的参数, 以tuple的方式传入 func4(**kargs) #把参数以键值对字典的形式传入 在变量前加上星号前缀(*),调用时的参数会存储在一个 tuple()对象中,赋值给形参。
在函数内部,需要对参数进行处理时,只要对这个 tuple 类型的形参(这里是 args)进行操作就可以了。因此,函数在定义时并不需要指明参数个数,就可以处理任意参数个数的情况。
复制代码 代码如下:def calcSum(*args): sum = 0 for i in args: sum += i print sum#调用:calcSum(1,2,3) calcSum(123,456) calcSum()#输出:65790################################# def printAll(**kargs): for k in kargs: print k, ':', kargs[k] printAll(a=1, b=2, c=3) printAll(x=4, y=5)#输出:a : 1 c : 3 b : 2 y : 5 x : 4 python的中参数可以多种形式进行组合, 在混合使用时,首先要注意函数的写法,必须遵守:1.带有默认值的形参(arg=)须在无默认值的形参(arg)之后2.元组参数(*args)须在带有默认值的形参(arg=)之后3.字典参数(**kargs)须在元组参数(*args)之后 在函数被调用时,参数的传递过程为:1.按顺序把无指定参数的实参赋值给形参2.把指定参数名称(arg=v)的实参赋值给对应的形参3.将多余的无指定参数的实参打包成一个 tuple 传递给元组参数(*args)4.将多余的指定参数名的实参打包成一个 dict 传递给字典参数(**kargs)8. lambda 表达式 lambda 表达式可以看做一种匿名函数 lambda 表达式的语法格式: lambda 参数列表: 表达式 #参数列表周围没有括号,返回值前没有 return 关键字,也没有函数名称 复制代码 代码如下:def fn(x): return lambda y: x + y#调用 a = fn(2) print a(3)#输出5 分析: fn(2)调用后, 相当于a = lambda y: 2 + y, 然后a(3)被调用时.相当于 print lambda y: 2 + 3。
千锋武汉Python需要学习的技术:第一阶段 python语言基础学完此阶段:掌握python脚本、python界面编程能力掌握数据库掌握基本爬虫掌握多线程多进程开发能力第二阶段 python web开发学完此阶段:掌握前端知识掌握python三大后端框架独立开发网站第三阶段 python爬虫学完此阶段:掌握python爬虫技术掌握多线程爬虫技术掌握分布式爬虫技术第四阶段 python数据分析学完此阶段:掌握python数据分析掌握python数据可视化掌握python机器学习。
##注意:最左边每个=表示一个空格
class Student:
====def __init__(self,xh,xm,pshchj,khchj):
========self.xh=xh
========self.xm=xm
========self.pshchj=float(pshchj)
========self.khchj=float(khchj)
========self.jszp()
##====计算总评
====def jszp(self):
========self.zp=self.pshchj*0.3+self.khchj*0.7
##====显示
====def show(self):
========print("姓名:{0},平时成绩:{1:f},考核成绩:{2:f}".format(self.xm,round(self.pshchj,1),round(self.khchj,1)))
stus=[]
filename="保存学生信息.txt"
##输入所有学生的信息
i,n=1,int(input("请输入学生的数量:"))
while i<=n:
====stus.append(Student(*(input("请输入第{0:d}个学生的学号,姓名,平时成绩,考核成绩(空格分割):\n".format(i)).split())))
====i+=1
##显示所有学生的信息
print("你输入的所有学生的信息:")
for stu in stus:
====stu.show()
====
##按学生学号排序学生列表
stus.sort(key=lambda stu : stu.xh)
##保存所有学生的信息到文件
ft="{0:<10}{1:<8}{2:<12f}{3:<12f}{4:f}\n"
stu_info=""
for stu in stus:
====stu_info+=ft.format(stu.xh,stu.xm,stu.pshchj,stu.khchj,stu.zp)
with open(filename,"w") as fo:
====fo.write(stu_info)
主要特点就是需要绑定到一个对象上,python解析器会自动把实例自身传递给方法,如14行所示,而直接使用InstanceMethod.f1()调用方法是不行的。
class InstanceMethod(object):
def __init__(self, a):
self.a = a
def f1(self):
print 'This is {0}.'.format(self)
def f2(self, a):
print 'Value:{0}'.format(a)
if __name__ == '__main__':
# im = InstanceMethod()
im = InstanceMethod('233')
im.f1()
# im.f2()
im.f2(233)
这里介绍几个常用的列表操作:
1、添加元素
添加元素使用列表的内置方法append
number = [1, 2, 3, 4]
number.append(5) # number = [1, 2, 3, 4, 5]
number.append([6,7]) # number = [1, 2, 3, 4, 5, [6, 7]]
number.append({'a':'b'}) # number = [1, 2, 3, 4, [6, 7], {'a', :'b'}
可以看到强大的python列表可以嵌套任意类型
2、列表相加
要想连接两个列表,可以使用+号连接
a = [1, 2, 3]
b = [4, 5, 6]
c = a + b # c = [1, 2, 3, 4, 5, 6]
也可以使用列表内置方法extend连接两个列表
a = [1, 2, 3]
b = [4, 5, 6]
a.extend(b) # a = [1, 2, 3, 4, 5, 6]
用+号会创建一个新通对象,使用extend则在原来的对象上面修改
3、列表去重复
列表本身没有去除重复的功能,但是可以借助python的另外一个类型set(help(set)查看)
a = [1, 2, 3, 3,2, 1]
b = list(set(a)) # b = [1, 2, 3]
也可以借助字典类型的内置方法
a = [1, 2, 2, 3, 1, 3]
b = {}.fromkeys(a).keys() # b = [1, 2, 3]
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
蜀ICP备2020033479号-4 Copyright © 2016 学习鸟. 页面生成时间:2.594秒