python 基础2
来源:互联网 发布:mysql count 编辑:程序博客网 时间:2024/06/14 15:58
一、作用域
对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用。
if
1
=
=
1
:
name
=
'wupeiqi'
print
name
下面的结论对吗?
外层变量,可以被内层变量使用内层变量,无法被外层变量使用
二、三元运算
result
=
值
1
if
条件
else
值
2
如果条件为真:result = 值1
如果条件为假:result = 值2
三、进制
- 二进制,01
- 八进制,01234567
- 十进制,0123456789
- 十六进制,0123456789ABCDEF
Python基础
对于Python,一切事物都是对象,对象基于类创建
所以,以下这些值都是对象: "wupeiqi"、38、['北京', '上海', '深圳'],并且是根据不同的类生成的对象。
一、整数
如: 18、73、84
每一个整数都具备如下功能:
二、长整型
可能如:2147483649、9223372036854775807
每个长整型都具备如下功能:
三、浮点型
如:3.14、2.88
每个浮点型都具备如下功能:
四、字符串
如:'wupeiqi'、'alex'
每个字符串都具备如下功能:
注:编码;字符串的乘法;字符串和格式化
五、列表
如:[11,22,33]、['wupeiqi', 'alex']
每个列表都具备如下功能:
注:排序;
六、元组
如:(11,22,33)、('wupeiqi', 'alex')
每个元组都具备如下功能:
七、字典
如:{'name': 'wupeiqi', 'age': 18} 、{'host': '2.2.2.2', 'port': 80]}
ps:循环时,默认循环key
每个字典都具备如下功能:
练习:元素分类
有如下值集合 [
11
,
22
,
33
,
44
,
55
,
66
,
77
,
88
,
99
,
90.
..],将所有大于
66
的值保存至字典的第一个key中,将小于
66
的值保存至第二个key的值中。
即: {
'k1'
: 大于
66
,
'k2'
: 小于
66
}
八、set集合
set是一个无序且不重复的元素集合
练习:寻找差异
# 数据库中原有
old_dict
=
{
"#1"
:{
'hostname'
:c1,
'cpu_count'
:
2
,
'mem_capicity'
:
80
},
"#2"
:{
'hostname'
:c1,
'cpu_count'
:
2
,
'mem_capicity'
:
80
}
"#3"
:{
'hostname'
:c1,
'cpu_count'
:
2
,
'mem_capicity'
:
80
}
}
# cmdb 新汇报的数据
new_dict
=
{
"#1"
:{
'hostname'
:c1,
'cpu_count'
:
2
,
'mem_capicity'
:
800
},
"#3"
:{
'hostname'
:c1,
'cpu_count'
:
2
,
'mem_capicity'
:
80
}
"#4"
:{
'hostname'
:c2,
'cpu_count'
:
2
,
'mem_capicity'
:
80
}
}
需要删除:?
需要新建:?
需要更新:? 注意:无需考虑内部元素是否改变,只要原来存在,新汇报也存在,就是需要更新
old_set = set(old_dict.keys())update_list = list(old_set.intersection(new_dict.keys()))new_list = []del_list = []for i in new_dict.keys(): if i not in update_list: new_list.append(i)for i in old_dict.keys(): if i not in update_list: del_list.append(i)print update_list,new_list,del_list
九、collection系列
1、计数器(counter)
Counter是对字典类型的补充,用于追踪值的出现次数。
ps:具备字典的所有功能 + 自己的功能
123c
=
Counter(
'abcdeabcdabcaba'
)
c
输出:Counter({
'a'
:
5
,
'b'
:
4
,
'c'
:
3
,
'd'
:
2
,
'e'
:
1
})
Counter2、有序字典(orderedDict )
orderdDict是对字典类型的补充,他记住了字典元素添加的顺序
OrderedDict3、默认字典(defaultdict)
学前需求:
12有如下值集合 [
11
,
22
,
33
,
44
,
55
,
66
,
77
,
88
,
99
,
90.
..],将所有大于
66
的值保存至字典的第一个key中,将小于
66
的值保存至第二个key的值中。
即: {
'k1'
: 大于
66
,
'k2'
: 小于
66
}
原生字典解决方法from collections import defaultdictvalues = [11, 22, 33,44,55,66,77,88,99,90]my_dict = defaultdict(list)for value in values: if value>66: my_dict['k1'].append(value) else: my_dict['k2'].append(value)defaultdict是对字典的类型的补充,他默认给字典的值设置了一个类型。
defaultdict4、可命名元组(namedtuple)
根据nametuple可以创建一个包含tuple所有功能以及其他功能的类型。
123import
collections
Mytuple
=
collections.namedtuple(
'Mytuple'
,[
'x'
,
'y'
,
'z'
])
Mytuple
5、双向队列(deque)
一个线程安全的双向队列
deque注:既然有双向队列,也有单项队列(先进先出 FIFO )
Queue.Queue
迭代器和生成器
一、迭代器
对于Python 列表的 for 循环,他的内部原理:查看下一个元素是否存在,如果存在,则取出,如果不存在,则报异常 StopIteration。(python内部对异常已处理)
二、生成器
range不是生成器 和 xrange 是生成器
readlines不是生成器 和 xreadlines 是生成器
>>>
print
range
(
10
)
[
0
,
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
]
>>>
print
xrange
(
10
)
xrange
(
10
)
生成器内部基于yield创建,即:对于生成器只有使用时才创建,从而不避免内存浪费
练习:<br>有如下列表:
[
13
,
22
,
6
,
99
,
11
]
请按照一下规则计算:
13
和
22
比较,将大的值放在右侧,即:[
13
,
22
,
6
,
99
,
11
]
22
和
6
比较,将大的值放在右侧,即:[
13
,
6
,
22
,
99
,
11
]
22
和
99
比较,将大的值放在右侧,即:[
13
,
6
,
22
,
99
,
11
]
99
和
42
比较,将大的值放在右侧,即:[
13
,
6
,
22
,
11
,
99
,]
13
和
6
比较,将大的值放在右侧,即:[
6
,
13
,
22
,
11
,
99
,]
...
深浅拷贝
为什么要拷贝?
当进行修改时,想要保留原来的数据和修改后的数据
数字字符串 和 集合 在修改时的差异? (深浅拷贝不同的终极原因)
在修改数据时:
数字字符串:在内存中新建一份数据
集合:修改内存中的同一份数据
对于集合,如何保留其修改前和修改后的数据?
在内存中拷贝一份
对于集合,如何拷贝其n层元素同时拷贝?
自:http://www.cnblogs.com/wupeiqi/articles/4911365.html
- Python基础 2----Python 基础语法
- Python 基础2
- Python 基础笔记(2)
- Python基础入门(2)
- Python 基础2
- Python<2>异常基础
- python numpy 基础2
- Python pandas基础2
- Python基础2 容器
- python基础练习2
- python基础练习2
- python 基础2
- 2、Python语法基础
- Python基础-函数[2]
- Python爬虫基础-2
- python基础2
- python基础语法(2)
- Python基础2
- 循环神经网络(RNN, Recurrent Neural Networks)介绍
- 抽象
- 【Scikit-Learn 中文文档】高斯过程
- 算法训练 5-1最小公倍数
- python3.6安装和pycharm汉化版安装
- python 基础2
- Linux dd命令详解
- 常用查询库 qsort和sort
- 深度学习 word2vec(一)
- 自定义分页实例PageBean
- js自执行函数
- uva12716(数论)
- iframe自适应引入页面的高度,并使用一个滚动条
- 例 6.7 输出一个菱形图。