Python学习笔记(一)python基础与函数

时间:2023-03-09 03:41:39
Python学习笔记(一)python基础与函数

1.python基础

1.1输入与输出

输出

print加上字符串,就可以打印指定的文字或数字

>>> print 'hello, world'
hello, world
>>> print 300
300
>>> print 100+200
300

print语句也可以跟上多个字符串,用逗号“,”隔开,就可以连成一串输出:

>>> print 'The quick brown fox', 'jumps over', 'the lazy dog'
The quick brown fox jumps over the lazy dog
>>> print '100+200 =', 100+200
100+200 = 300

输入

Python提供了一个raw_input,可以让用户输入字符串,并存放到一个变量里。比如输入用户的名字:

>>> name = raw_input()
Michael
>>> name
'Michael'

raw_input()读取的内容永远以字符串的形式返回,可以用 int(), float()等强制转换数值类型 

1.2 python语法

Python的语法比较简单,采用缩进方式,写出来的代码就像下面的样子:

# print absolute value of an integer:
a = 100
if a >= 0:
    print a
else:
    print -a

#开头的语句是注释,注释是给人看的,可以是任意内容,解释器会忽略掉注释。其他每一行都是一个语句,当语句以冒号“:”结尾时,缩进的语句视为代码块。

1.3数据类型和变量

1. 用r''表示''内部的字符串默认不转义

>>> print '\\\t\\'
\       \
>>> print r'\\\t\\'
\\\t\\

2. Python允许用'''...'''的格式表示多行内容

>>> print '''line1
... line2
... line3'''
line1
line2
line3

3. 当我们写

a = 'ABC'

时,Python解释器干了两件事情:

  1. 在内存中创建了一个'ABC'的字符串;

  2. 在内存中创建了一个名为a的变量,并把它指向'ABC'

也可以把一个变量a赋值给另一个变量b,这个操作实际上是把变量b指向变量a所指向的数据,例如下面的代码:

>>>a = 'ABC'
>>>b = a
>>>a = 'XYZ'
>>>print b
'ABC'

1.3字符串与编码

Python提供了ord()和chr()函数,可以把字母和对应的数字相互转换:

>>> ord('A')
65
>>> chr(65)
'A'

python中如果要添加汉子支持,需要在文件最开头添加

# coding: utf-8

在Python中,采用的格式化方式和C语言是一致的,用%实现

常见的占位符有:

%d 整数
%f 浮点数
%s 字符串
%x 十六进制整数

>>> '%2d-%02d' % (3, 1)
' 3-01'
>>> '%.2f' % 3.1415926
'3.14'
>>> 'growth rate: %d %%' % 7
'growth rate: 7 %'

1.4使用列表list和元组tuple

list [] 是一种有序的集合,可以随时添加和删除其中的元素。  索引从 0 - -1

>>> classmates = ['Michael', 'Bob', 'Tracy']
>>> classmates
['Michael', 'Bob', 'Tracy']
>>> len(classmates)                         # 链表长度
3
>>> classmates[-1]                          # 链表最后一个索引标记为-1
'Tracy'
>>> classmates.append('Adam')               # 扩充链表
>>> classmates
['Michael', 'Bob', 'Tracy', 'Adam']
>>> classmates.insert(1, 'Jack')            # 插入链表元素
>>> classmates
['Michael', 'Jack', 'Bob', 'Tracy', 'Adam']
>>> classmates.pop(1)                       # 删除链表元素
'Jack'
>>> classmates
['Michael', 'Bob', 'Tracy']
>>> classmates[1] = 'Sarah'                 # 替换链表元素
>>> classmates
['Michael', 'Sarah', 'Tracy']

list元素也可以是另一个list,比如:

>>> s = ['python', 'java', ['asp', 'php'], 'scheme']
>>> len(s)
4

如果一个list中一个元素也没有,就是一个空的list,它的长度为0:

>>> L = []
>>> len(L)
0

tuple  () 是另一种有序列表叫元组。tuple和list非常类似,但是tuple一旦初始化就不能修改了

只有1个元素的tuple定义时必须加一个逗号,,来消除表达一个数的歧义:

>>> t = (1)
>>> t
1
>>> t = (1,)
>>> t
(1,)

tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!

小结

list和tuple是Python内置的有序集合,一个可变,一个不可变。根据需要来选择使用它们。

1.5 使用字典dict和集合set

Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。

>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
>>> d['Michael']
95

要避免key不存在的错误,有两种办法,一是通过in判断key是否存在:

>>> 'Thomas' in d
False

二是通过dict提供的get方法,如果key不存在,可以返回None,或者自己指定的value:

>>> d.get('Thomas')
>>> d.get('Thomas', -1)
-1

要删除一个key,用pop(key)方法,对应的value也会从dict中删除:

>>> d.pop('Bob')
75
>>> d
{'Michael': 95, 'Tracy': 85}

请务必注意,dict内部存放的顺序和key放入的顺序是没有关系的。

和list比较,dict有以下几个特点:

  1. 查找和插入的速度极快,不会随着key的增加而增加;
  2. 需要占用大量的内存,内存浪费多。

而list相反:

  1. 查找和插入的时间随着元素的增加而增加;
  2. 占用空间小,浪费内存很少。

所以,dict是用空间来换取时间的一种方法。

注意:dict的key必须是不可变对象

set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。

要创建一个set,需要提供一个list作为输入集合,且重复元素在set中自动被过滤:

>>> s = set([1, 1, 2, 2, 3, 3])
>>> s
set([1, 2, 3])

通过add(key)方法可以添加元素到set中,可以重复添加,但不会有效果:

>>> s.add(4)
>>> s
set([1, 2, 3, 4])
>>> s.add(4)
>>> s
set([1, 2, 3, 4])

通过remove(key)方法可以删除元素:

>>> s.remove(4)
>>> s
set([1, 2, 3])

set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作:

>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
set([2, 3])
>>> s1 | s2
set([1, 2, 3, 4])

set和dict的唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”

小结

使用key-value存储结构的dict在Python中非常有用,选择不可变对象作为key很重要,最常用的key是字符串。

tuple虽然是不变对象,但试试把(1, 2, 3)(1, [2, 3])放入dict或set中,并解释结果。