基本数据类型(代码基于Python 3)

和大多数编程语言一样,拥有基本数据类型:整型,浮点型,布尔型和字符串等

数字:整型与浮点型的使用与其他语言类似

x = 3
print(type(x))
print (x)
y = 2.5
print(type(y))
print(y, y + 1, y * 2, y ** 2)

布尔型:实现所有的布尔逻辑用的是英语而不是操作符(&&,||)

t = True
f = False
print(type(t))
print(t and f)
print(t or f)
print(not t)
print(t != f)

字符串:Python对于字符串的支持很棒!

# 字符串 
h = 'hello'
w = 'world'
print(h)
print(w)
print(len(h)) # String length 返回字符串长度
hw = h + ' ' + w # 字符串拼接
print(hw)
hw12 = '%s %s %d' % (h, w, 12)
print(hw12)

拼接, 输出多个 都OK

字符串还有一些有用的方法,比如:

s = 'hello'
print(s.capitalize()) #首字母大写
print(s.upper()) #全部大写
print(s.rjust(7))
print(s.center(7))
print(s.replace('l','(ell)')) # 替换所有字母l
print('  world')
print('  world'.strip()) # 删除前面空格,顶前

Containers(译为:容器):list, dictionary,set,tuple

list

列表是python中的数组,长度可变且能包含不同类型元素

# 列表list
xs = [3, 1, 2] #创建列表
print(xs, xs[2], xs[0]) # index 索引从0开始
print(xs[-1]) # 倒数第一个
xs[2] = 'foo' # 替换list中第三个元素
print(xs)
xs.append('bar') # 最后面加元素
print(xs)
x = xs.pop() # 删除最后一个元素
print(x, xs)

切片Slicing:为了一次性获取列表中的元素,python提供了一种简洁的语法——切片slicing

# 切片slicing
nums =[0, 1, 2, 3, 4]
print(nums)
print(nums[2:4]) # 取索引2,3 即第3个和第4个,最后一个取不到
print(nums[2:])  # 从索引2 即第3个取到最后
print(nums[:2])  # 从头取到索引1,即第2个,取不到索引2
print(nums[:])   # 取所有
print(nums[:-1]) # 从头取除了最后一个
nums[2:4] = [8, 9] # 替换
print(nums)

在Numpy库中,还会再次接触到切片

循环loops:我们可以遍历列表中的每一个元素

# 循环loops,遍历每一个元素
animals = ['cat', 'dog', 'monkey']
for animal in animals:
    print(animal)

若想访问每个元素的指针,使用内置的enumerate函数

# 循环,访问每个元素的指针,使用内置的enumerate函数
animals = ['cat', 'dog', 'monkey']
for idx, animal in enumerate(animals):
    print('#%d: %s' % (idx, animal))

列表推导List comprehensions:我们想把一种数据类型转换为另一种

例子:把列表中每个元素将其平方

nums = [0, 1, 2, 3, 4]
squares = []
for x in nums:
    squares.append(x ** 2)
print(squares)

使用列表推导,代码会简化很多:

# List comprehensions
nums = [0, 1, 2, 3, 4]
squares = [x ** 2 for x in nums]
print(squares)

列表推导还可以包含条件:

# 包含条件的List comprehensions
nums = [0, 1, 2, 3, 4]
even_squares = [x ** 2 for x in nums if x % 2 == 0]
print(even_squares)

字典dictionary

字典用来储存对(键,值):

# 字典
d = {'cat': 'cute', 'dog': 'furry'} # 创建一个字典
print(d['cat']) # 得到键cat的值cute
print('cat' in d) # 判断键cat是否在字典d中
d['fish'] = 'wet' 
print(d['fish'])
print(d.get('monkey', 'N/A')) # 得到默认值,若没有则N/A
print(d.get('fish', 'N/A'))
del d['fish'] # 删除
print(d.get('fish', 'N/A'))

循环loops:在字典中,用键来迭代更加容易

# 循环loops:在字典中,用键来迭代更加容易
d = {'person': 2, 'cat': 4, 'spider': 8}
for animal in d:
    print(animal)
    legs = d[animal]
    print('A %s has %d legs' % (animal, legs))

若访问键和对应的值使用iteritems方法(python2),python3中更改为items方法:

# 访问键和对应的值使用iteritems方法(pyhon2),python3中更改为items方法:
d = {'person':2, 'cat': 4, 'spider': 8}
#for animal, legs in d.iteritems():
for animal, legs in d.items():
    print('A %s has %d legs' %(animal, legs))

字典推导Dictionary comprehensions:和列表推导类似,但是允许你方便地构建字典

nums = [0, 1, 2, 3, 4]
even_num_to_square = {x: x ** 2 for x in nums if x % 2 == 0}
print(even_num_to_square)



集合Sets

集合是独立不同个体的无序集合。

# 集合sets
animals = {'cat', 'dog'}
print('cat' in animals)
print('fish' in animals)
animals.add('fish')
print('fish' in animals)
print(len(animals))
animals.add('cat')
print(len(animals))
animals.remove('cat')
print(len(animals))

循环loops:在集合中循环的语法和列表一样,但集合是无序的所以访问集合元素的时候,不能做关于顺序的假设。

animals = {'cat', 'dog', 'fish'}
for idx, animal in enumerate(animals):
    print('%#d: %s' %(idx + 1 , animal))

集合推导Set comprehension :和字典一样,可以很方便的构建集合

# 集合推导
from math import sqrt
nums = {int(sqrt(x)) for x in range(30)}
print(nums)



元组Tuples

元组是一个值的所有序列表(不可改变)。和列表的不同:元组可以作为字典中的键和集合的元素,列表不行。

# 元组()
d = {(x, x + 1): x for x in range(10)}
print(d)
t = (5, 6)
print(type(t))
print(d[t])
print(d[(1,2)])

函数Function

# def 来定义函数
def sign(x):
    if x > 0:
        return 'positive'
    elif x < 0:
        return 'negative'
    else:
        return 'zero'

for x in [-1, 0, 1]:
    print(sign(x))

常用可选参数来定义函数

# def 可选参数来定义函数
def hello(name, loud=False):
    if loud:
        print('HELLO, %s' % (name.upper()))
    else:
        print('Hello, %s!' % (name))

hello('Bob')
hello('Fred', loud=True)

类Class

# 类 Class
class Greeter(object):
    
    # Constructor
    def __init__(self, name):
        self.name = name # create an instance variable
        
    # Instance method
    def greet(self, loud=False):
        if loud:
            print('HELLO, %s' % self.name.upper())
        else:
            print('hello, %s' % self.name)
            
g = Greeter('Fred') # construct an instance of the Greeter class
g.greet()  # call an instance method print "hello, Fred"
g.greet(loud=True)  # print "HELLO, FRED"