-
sorted()函数可对list进行排序
比较函数,传入两个待比较的元素 x, y,如果需要 x排在 y 的前面,返回 -1,如果需要 x 排在 y 的后面,返回 1。如果如果需要 x 和 y 相等,返回 0。
查看全部 -
模块的导入:
1、import (某包下的).模块名
2、from 某包 import 模块
函数的调用:
1、import 模块
模块.函数名
2、from (某包.)模块 import 函数名
函数直接调用
查看全部 -
"利用import ... as ...,还可以动态导入不同名称的模块",
例如:
try: import json except ImportError: import simplejson as json
之所以“动”是因为存在多个模块,调用时会动态选择,但始终用同一个模块名‘如:json’即可访问
查看全部 -
filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。
查看全部 -
注意: s.strip(rm) 删除 s 字符串中开头、结尾处的 rm 序列的字符。
当rm为空时,默认删除空白符(包括'\n', '\r', '\t', ' '),如下:
a = ' 123' a.strip()
结果: '123'
a='\t\t123\r\n' a.strip()
结果:'123'
查看全部 -
reduce() 函数会对参数序列中元素进行累积。
函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。
语法
reduce() 函数语法:
reduce(function, iterable[], initializer)
参数
function -- 函数,有两个参数
iterable -- 可迭代对象
initializer -- 可选,初始参数
返回值
返回函数计算结果。
实例
以下实例展示了 reduce() 的使用方法:
>>>def add(x, y) : # 两数相加... return x + y... >>> reduce(add, [1,2,3,4,5]) # 计算列表和:1+2+3+4+515>>> reduce(lambda x, y: x+y, [1,2,3,4,5]) # 使用 lambda 匿名函数15
查看全部 -
返回函数不要引用任何循环变量,或者后续会发生变化的变量。
查看全部 -
class Student(object):
def __init__(self, name, score):
self.name = name
self.score = score
def __str__(self):
return '(%s: %s)' % (self.name, self.score)
__repr__ = __str__
def __cmp__(self, s):
if self.score < s.score:
return 1
elif self.score > s.score:
return -1
else:
if self.name < s.name:
return -1
elif self.name > s.name:
return 1
else:
return 0
L = [Student('Tim', 99), Student('Bob', 88), Student('Alice', 99)]
print sorted(L)
#以上上Python2中的写法,在Python3中,因为#sorted函数的实现方式完全改变了,所以不再需要#cmp这个方法了。可以使用下面的方式实现:
from operator import itemgetter, attrgetter # 导入对list和class的属性引用方法; class Student(object): def __init__(self, name, score): self.name = name self.score = score def __str__(self): return '(%s: %s)' % (self.name, self.score) __repr__ = __str__ L = [Student('Tim', 99), Student('Bob', 88), Student('Bob', 91), Student('Alice', 99), Student('kob', 88), Student('wave', 88)] print("原始的学生数列:",L) # L2 = sorted(L, key=itemgetter(1, 0), reverse=True) # 类不能实现这种方法;根据第二个项(成绩)先倒序,然后如果相同,在根据第一个项(姓名)排序 L3 = sorted(L, key=attrgetter('score', 'name'), reverse=True) # 先根据score成员倒序排序,再根据name属性倒序排序, print("根据属性排序后的学生数列:", L3) # 如果要实现按成绩降序,成绩相同时根据姓名升序,如何实现?最简单的办法就是使用二次排序, # 因为排序具有顺序保存功能,在排序关键字相同的情况下,会保持原来的顺序; L11 = sorted(L, key=attrgetter('name'), reverse=False) # 先根据姓名由小到大排序,升序排序, print("根据姓名升序排序后的学生数列:", L11) L12 = sorted(L11, key=attrgetter('score'), reverse=True) # 再根据成绩有大到小排序,降序排序, print("再根据成绩降序排序后的学生数列:", L12) # 比较输出结果,就可以实现根据成绩降序排序,成绩相同按姓名升序排序的结果啦。 # 再根据成绩降序排序后的学生数列: [(Alice: 99), (Tim: 99), (Bob: 91), (Bob: 88), (kob: 88), (wave: 88)]
查看全部 -
class Person(object):
def __init__(self, name, gender):
self.name = name
self.gender = gender
class Student(Person):
def __init__(self, name, gender, score):
super(Student, self).__init__(name, gender)
self.score = score
def __str__(self):
return '(Student: %s, %s, %d)' %(self.name, self.gender, self.score)
__repr__ = __str__
s = Student('Bob', 'male', 88)
print s
# 答案有问题,要求输出<Student: >:,结果答案里是(Student),把<>改成了()
查看全部 -
import json
class Students(object):
def read(self):
return r'["Tim", "Bob", "Alice"]'
s = Students()
print json.load(s)
# 只要有一个read方式就可以了。read方法返回的字符串供load解析。
查看全部 -
import math
math.sqrt #平方根
查看全部 -
使用@语句的时候会把函数重新绑定一次,相当于完完全全的执行了以下代码,除了返回的新函数,以函数形式返回,不会被执行
def new_f(f):
def fn(x):
新增代码
return f(x)这里执行了f(x)
return fn
f=new_f(f)
f(x)
查看全部 -
任务
如果将类属性 count 改为私有属性__count,则外部无法读取__score,但可以通过一个类方法获取,请编写类方法获得__count值。
#是外部无法获取__count,而不是__score;
class Person(object): __count = 0 # 类属性,外部不能访问到的; @classmethod # 类方法,对象(实例)不能访问的,出入参数cls, 通过类名访问Person.how_many() def how_many(cls): return cls.__count def __init__(self, name): self.name = name Person.__count += 1 print(Person.how_many()) p1 = Person('Bob') print(Person.how_many())
查看全部 -
python中filter()函数
def is_not_empty(s): return s and len(s.strip()) > 0 filter(is_not_empty, ['test', None, '', 'str', ' ', 'END'])
结果:['test', 'str', 'END']
注意: s.strip(rm) 删除 s 字符串中开头、结尾处的 rm 序列的字符。
a = ' 123' a.strip()
结果: '123'
a='\t\t123\r\n' a.strip()
结果:'123'
查看全部 -
# -*- coding: utf-8 -*-
class Person(object):
def __init__(self, name, score):
self.name = name
self.__score = score
def get_grade(self):
if self.__score >= 90:
return "A-优秀"
elif self.__score >= 60:
return "B-及格"
else:
return "C-不及格"
p1 = Person('Bob', 90)
p2 = Person('Alice', 65)
p3 = Person('Tim', 48)
print p1.get_grade()
print p2.get_grade()
print p3.get_grade()
# 要引入代码注释,python2不支持中文字符,要求里又有优秀汉字,所以答案不太合理,不能不要汉字,而是应该引入coding : utf-8的注释。上面代码在python3中就没有问题,不要注释的。
查看全部
举报