1.有中文的时候要定义编码,不然会报错
#coding=utf-8
2.单行注释用 #
多行注释用 " " "
new="这是一个全局变量" #注释
" " "
这是多行注释
" " "
3.不用定义变量数据类型,它会根据你赋值的数据类型自动给变量定义数据类型
a="aassscbu" # a就是字符串类型
4.引入文件
例如引入 :stand.py 文件
import stand
一、变量与赋值
1.变量命名规范。
1.1 记住不能做什么:不能用关键字,开头不能用数字,不能用操作符。
1.2 怎么搭配最合理:没事别乱用大写。清晰。尽量不要用拼音。用拼音的话用全称。
2.赋值
2.1 记住动态特性。
2.2 多重赋值。
a,b,c = "str1","str2",4
2.3 删除变量
del a #或者
del a,b,c
3.如何确定变量的数据类型
a = 1
type(a) #int类型
二、常用的数据类型
int 整型
boolean 布尔
string 字符串
list 列表
tuple 元组
dict 字典
数据类型的可变和不可变
不可变类型:int , string , tuple
可变类型:list , dict
1> 变量之赋值一切皆为引用,动态性与动态类型之为何不再动态
a="1234"
a+1 # 报错,不会动态转换 a 的数据类型,除非 强制类型转换
int(a)+1 # 正确 1235
a="1234ccc"
int(a) # 报错 不能进行类型转换,因为 c 不是纯的数字
2> 互相转换之 int , bool
bool(1==1) # 结果 true
a=bool(1==1) # a 可以引用 bool 值的结果
注意:
1.len 需注意
问题:
问题描述:一个中文 ascii 默认三个字节
解决方法:
1.把 ascii 变为 unicode 码
a = u "哈"
print len(a) # 1
2.用 decode 方法
a = "哈哈哈"
g=a.decode(utf-8)
print len(g) # 3
1.修改字符串 replace
修改字符串中的某个值
2.查找字符串 find
格式:变量.find("查找的值",从第几位开始)
如果返回的是 -1 :表示没找到,返回的是 0 以上的值,指的是找到了
返回的值是索引值
单引号,双引号的使用注意:
单引号里面有单引号需要转义字符
单引号里面有双引号不需要转义字符
二、列表
1.特征
1 有序的集合
2 通过偏移来索引,从而读取数据 (通过正向索引值的负值可反向索引数值)
-
3 支持嵌套
-
4 可变的类型
2.添加操作:
+:生成一个新的列表
Extend 接受参数并将该参数的每个元素都添加到原有的列表中,原地修改列表而不是新建列表
Append :添加任意对象到列表的末端
Insert: 插入任意对象到列表中,可以控制插入位置。
4. 修改:
修改列表本身只需要直接赋值操作就行。
A = [1,2,3]
A[0]=’haha
5.删除操作:
Del :我们通过索引删除指定位置的元素。
Remove:移除列表中指定值的第一个匹配值。如果没找到的话,会抛异常。
Pop:返回最后一个元素,并从list中删除它。
6 列表推导式:
[expr for iter_var in iterable]
1首先迭代iterable里所有内容,每一次迭代,都把iterable里相应内容放到iter_var中,再在表达式中应用该iter_var的内容,最后用表达式的计算值生成一个列表。
比如我们要生成一个包含1到10的列表
[x for x in range(1,11)]
Range(1,11)
[expr for iter_var in iterable if cond_expr]
2加入了判断语句,只有满足条件的内容才把iterable里相应内容放到iter_var中,再在表达式中应用该iter_var的内容,最后用表达式的计算值生成一个列表。
要生成包含1到10的所有奇数列表。
range(1,11,2)
[x for x in range(1,11) if x % 2 == 1]
7 排序翻转:sort
,reverse
a = [33,11,22,44]
这个方式直接修改原列表。他的返回值为none,所以
b = a.sort()
print b 输出的内容是None
我们直接输出a列表变量
小技巧之再议删除
1.del 删除列表对象的引用
2.del [ : ] 清空列表对象里的元素
切片取值:
a[ x : x ]
三、元组
1.特点:
1 有序的集合
2 通过偏移来取数据
3 属于不可变的对象,不能在原地修改内容,没有排序,修改等操作。
tuple 类型转换
那为什么有列表还要有元组呢?
元组不可变的好处。保证数据的安全,比如我们传给一个不熟悉的方法或者数据接口,
确保方法或者接口不会改变我们的数据从而导致程序问题。
def info(a):
'''一个我们不熟悉的方法'''
a[0] = 'haha'
a = [1,2,3]
info(a)
print a # ['haha',2,3]
2. 集合:
集合是没有顺序的概念。所以不能用切片和索引操作。
1 创建集合。set():可变的 不可变的frozenset():
2 添加操作: add,update (区别:add 整体加入,update 是分开加入)
3 删除 remove
4 成员关系 in,not in
6 交集,并集,差集 & | -
7 set去重 列表内容元素重复
四、字典
字典是无序的,它不能通过偏移来存取,只能通过键来存取。
字典 = {'key':value} key:类似我们现实的钥匙,而value则是锁。一个钥匙开一个锁
特点:
1.内部没有顺序,通过键来读取内容,可嵌套,方便我们组织多种数据结构,并且可以原地修改里面的内容,属于可变类型。
2.组成字典的键必须是不可变的数据类型,比如,数字,字符串,元组等,列表等可变对象不能作为键.
创建字典。{},dict()
info = {'name':'lilei', 'age': 20}
info = dict(name='lilei',age=20)
添加内容 a['xx'] = 'xx'
比如
info['phone'] = 'iphone5'
修改内容
- a['xx'] = 'xx' ,
info['phone'] = 'htc'
2.update 参数是一个字典的类型,他会覆盖相同键的值
info.update({'city':'beijing','phone':'nokia'})
删除 del,clear,pop
del info['phone'] 删除指定的某个元素
info.clear() 删除字典的全部元素
info.pop('name') 通过键去删除,返回值,并删除这个键值
列表的 pop()方法 通过下标索引值去删除
in 和 has_key() 成员关系操作
判断是否在键值是否在这个字典里
比如:
1 phone in info
2 info.has_key('phone')
方法
keys(): 返回的是列表,里面包含了字典的所有键
values():返回的是列表,里面包含了字典的所有值
-
items:生成一个字典的容器:[()]
get:从字典中获得一个值
info.get('name')
info.get('age2','22') #还可以设置它的返回值是 22