数据类型
字符编码:
注释:
用户输入:
数据类型
列表和字典
list列表
list的深浅拷贝
dict 字典
数据类型
字符编码:
我们通常还是用GBK指代中文windows内码
usf-8是对编码的压缩和优化,在编写python的时候需要声明给python解释器(说了python是解释型语言),使用什么编码来执行源代码:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
注释:
单行注释#
多行注释 ``` ```
用户输入:
input()
需要限制输入类型的时候,在input外面套接一个数据类型例如int(input())
输入密码时,如果想要不可见,需要利用getpass
模块中的getpass
方法:
import getpass
pwd = getpass.getpass(‘enter your pwd:‘)
数据类型
在这里穿插解释数据类型
- 数字
int
整型long
长整型:在python2.2以后的版本里,python在长整数据后面不加L也不会有太大的问题float
浮点型complex
复数 - 布尔值
真/假
- 字符串
‘hello world‘
- 字符串的格式化输出
name = ‘scott‘
print(‘i am %s‘%name)
#字符串是%s ; 整数%d ; 浮点数 %f
- 字符串操作方法:
print(name.strip()) #脱
print(name.split()) #分割
print(name.len()) #长度
print(name.index(‘s‘)) #索引
name1 = ‘scott,jack,jerry‘
print(name[0:4])
#输出结果为‘scot’
#说明python切片的一条规则
#**顾头不顾尾**
#范例:
print(name [-6:])
print(name [-6:1])
print(name [0::3]) #隔几个字符取一次
列表和字典
list列表
- 定义列表
>>> name = [‘scott‘,‘jack‘,‘jerry‘,‘peter‘]
- 添加元素(append)
>>> name.append(‘super‘)
>>> name
[‘scott‘, ‘jack‘, ‘jerry‘, ‘peter‘, ‘super‘]
- 定位添加元素(insert)
>>> name.insert(2,‘alex‘)
>>> name
[‘scott‘, ‘jack‘, ‘alex‘, ‘jerry‘, ‘peter‘, ‘super‘]
- 定位删除元素
>>> name.pop(3)
‘jerry‘
>>> name
[‘scott‘, ‘jack‘, ‘alex‘, ‘peter‘, ‘super‘]
不添加参数,默认删除最后一个
>>> name.pop()
‘super‘
- 在列表中定位元素位置
>>> name.count(‘jack‘)
1
list的深浅拷贝
## 计算结果以及为什么?
a = [1, 2, [3, "hello"], {"egon": "aigan"}]
# 形参a指向一块储存列表的内存位置
b = a[:]
# 形参b指向相同的位置
a[0] = 5
# 原本a的列表修改了某个值,a指向别的内存地址,该地址存储着新的列表
# a修改了某个一层列表元素的位置,b不受影响
a[2][0] = 666
# a修改了某个二层列表元素的位置,b受到影响
print(a)
print(b)
# 知识点:深浅拷贝,b = a[:]让b获得了a的值,但是二者并不公用一块内存地址
# 但是两个列表中的二级列表,指向的是同一块内存地址,
# 所以当两个列表中,一级元素发生改变的时候,互不影响,但当二级元素发生改变的时候,二者同时发生变化。
# 有用于强制深拷贝的模块
dict 字典
key Value 键值
key 必须唯一
- 字典为什么是无序的?
name= {
9527:{‘name‘:‘scott‘,‘age‘:23},
9528:{‘name‘:‘jack‘,‘age‘:24},
9529:{‘name‘:‘jerry‘,‘age‘:22},
9530:{‘name‘:‘peter‘,‘age‘:22}
}
- 取值
print(name[9527][‘age‘])
- 增
name[9526] = ‘yage‘
- 删
print(name.pop(9526)) #---会返回他的值
print(name.popitem()) #---随机删除一个
- 改
- 修改某个字典元素
name[9528][0] = ‘super jack‘
- 在某个字典中增加一个数字
name[9529].append(28)
- 修改某个字典元素
- 查
print(name.get(9527))
print(9527 in name)
print(name.keys())
print(name.values())
- loop
- 只打印key
for i in name:
print(i)
for i in name.items():
print (i)
for k,v in names.items():
print(k,v)
- 只打印key
- 更新
dict2 = {
9523:{‘name‘:‘sco‘,‘age‘:23}
9524:{‘name‘:‘jac‘,‘age‘:24}
9525:{‘name‘:‘jer‘,‘age‘:22}
9536:{‘name‘:‘pet‘,‘age‘:22}
}
.update()
如果dict.update(dict2)
如果dict2中有dict已经有的键值,就更新覆盖该键值