python(二)

切片

取一个list或tuple的部分元素是非常常见的操作。

我们可以需要用到循环甚至一个一个取得到列表中的数据,但是用到切片,这一切将变得简单

下面取了列表中的第2,3项

L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']
L[1:3]

结果

['Sarah', 'Tracy']

这里是对1-100的数字每隔10倒序输出

to_one_hundred = range(1, 101)

# Add your code below!
backwards_by_tens = to_one_hundred[::-10]

print backwards_by_tens

结果

[100, 90, 80, 70, 60, 50, 40, 30, 20, 10]

lambda的使用

当您需要一个快速函数来为您完成一些工作时,Lambda 非常有用。

找到对应的字符串

languages = ["HTML", "JavaScript", "Python", "Ruby"]

# Add arguments to the filter()
print filter(lambda x: x == "Python", languages)

处理字段

garbled = "IXXX aXXmX aXXXnXoXXXXXtXhXeXXXXrX sXXXXeXcXXXrXeXt mXXeXsXXXsXaXXXXXXgXeX!XX"

message = filter(lambda x: x != 'X',garbled)
print message

按位运算符简介

print 5 >> 4  # Right Shift
print 5 << 1  # Left Shift
print 8 & 5   # Bitwise AND
print 9 | 4   # Bitwise OR
print 12 ^ 42 # Bitwise XOR
print ~88     # Bitwise NOT

结果

0
10
0
13
38
-89

左移,右移

# Left Bit Shift (<<)  
0b000001 << 2 == 0b000100 (1 << 2 = 4)
0b000101 << 3 == 0b101000 (5 << 3 = 40)       
 
# Right Bit Shift (>>)
0b0010100 >> 3 == 0b000010 (20 >> 3 = 2)
0b0000010 >> 2 == 0b000000 (2 >> 2 = 0) 

按位和

	a: 00101010 42
	b: 00001111 15 
===================
a & b: 00001010 10

按位或

    a:  00101010  42
    b:  00001111  15       
================
a | b:  00101111  47

异或

    a:  00101010   42
    b:  00001111   15       
================
a ^ b:  00100101   37

按位 NOT

按位 NOT 运算符 () 只是将所有位翻转为一个数字。这对计算机的实际意义实际上非常复杂,所以我们不打算深入探讨。只要知道,从数学上讲,这相当于在数字上加一,然后把它变成负数。

将第N位的数翻转

def flip_bit(number, n):
  bit_to_flip = 0b1 << (n -1)
  result = number ^ bit_to_flip
  return bin(result)

print flip_bit(0b110110,5)

Python面向对象

面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想。OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。

基本格式

class Triangle(object):# 定义了一个类,里面有名字和分数的定义
  number_of_sides = 3
 
  def __init__(self, angle1, angle2, angle3):# 特殊方法“__init__”前后分别有两个下划线!!
    self.angle1 = angle1
    self.angle2 = angle2
    self.angle3 = angle3


my_triangle  = Triangle(90,30,60)

访问限制

如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线__,在Python中,实例的变量名如果以__开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问,所以,我们把Student类改一改:

class Triangle(object):# 定义了一个类,里面有名字和分数的定义
  number_of_sides = 3
 
  def __init__(self, angle1, angle2, angle3):# 特殊方法“__init__”前后分别有两个下划线!!
    self.__angle1 = angle1
    self.__angle2 = angle2
    self.__angle3 = angle3

继承

最大的好处是子类获得了父类的全部功能。由于Animial实现了run()方法,因此,Dog和Cat作为它的子类,什么事也没干,就自动拥有了run()方法:
继承的第二个好处需要我们对代码做一点改进。就可以改变内容

class Triangle(object):
  number_of_sides = 3
  def __init__(self, angle1, angle2, angle3):
    self.angle1 = angle1
    self.angle2 = angle2
    self.angle3 = angle3
    
class Equilateral(Triangle):
  angle = 60
  def __init__(self):
    self.angle1 = self.angle
    self.angle2 = self.angle
    self.angle3 = self.angle

关于汽车的例子

class Car(object):
  condition = "new"
  def __init__(self, model, color, mpg):
    self.model = model
    self.color = color
    self.mpg   = mpg
   
  def display_car(self):
    print "This is a %s %s with %s MPG." % (self.color, self.model, str(self.mpg))
    
  def drive_car(self):
    self.condition = "used"

my_car = Car("DeLorean", "silver", 88)

print my_car.condition
my_car.drive_car()
print my_car.condition

class ElectricCar(Car):
  def __init__(self,model,color,mpg,battery_type):
    self.model        = model
    self.color        = color
    self.mpg          = mpg
    self.battery_type = battery_type

  def drive_car(self):
    self.condition = "like new" 
  
my_car = ElectricCar("DeLorean", "silver", 88, "molten salt")
print my_car.condition
my_car.drive_car()
print my_car.condition



  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值