文成小盆友python-num2 数据类型、列表、字典
一.先聊下python的运行过程
计算机是不能够识别高级语言的,所以当我们运行一个高级语言程序的时候,就需要一个“翻译机”来从事把高级语言转变成计算机能读懂的机器语言的过程。这个过程分成两类,第一种是编译,第二种是解释。编译型语言在程序执行之前,先会通过编译器对程序执行一个编译的过程,把程序转变成机器语言。运行时就不需要翻译,而直接执行就可以了。最典型的例子就是C语言。解释型语言就没有这个编译的过程,而是在程序运行的时候,通过解释器对程序逐行作出解释,然后直接运行,最典型的例子是Ruby。
当python程序运行时,编译的结果则是保存在位于内存中的PyCodeObject中,当Python程序运行结束时,Python解释器则将PyCodeObject写回到pyc文件中。当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到(然后通过比较确认是否为最新),则直接载入,否则就重复上面的过程。所以我们应该这样来定位PyCodeObject和pyc文件,我们说pyc文件其实是PyCodeObject的一种持久化保存方式。
二.数据类型基本操作
1.数字
int -- 整形
float -- 浮点型
complex -- 复数
2.布尔值
真或假
1 或 0
True 或 False
3.列表
1.创建列表方法:
#!/bin/env python
#-*- coding:utf-8 -*- name = ["jack","stove","janny"] ###或者 name = list(["jack","stove","janny"])
2.列表基本操作:
- 切片(取出多个值):
name[0:2] #取出从下标为0 到下标为2的所有值 (包含前面不包含后面) name[-5:-1] #取出后四个(不包含最后) name[-5:] #取出最后五个值 name[0:6:2] #最后值 2 为步长
- 修改值
name[2] = "LiMing" #直接修改下标为2的元素的值 name.insert(2,'liMing') #用insert方法来添加将值插入到下标为2的位置 name.append("WangMeiei") #追加值
- 删除值
name.remove("LiMing") #直接写入要 删除的值 ##del为python全局功能 也可以删除包括字符串等其他类型
del name[1] #删除下标为1的元素 del name[1:3] #删除下标从1到3的值(不包括最后)
- 判断元素是否在内
# in 判断元素是否存在在列表中 name = ["abc","bbb","ccc","","ddd"] if "abc" in name:
print("abc ")
else:
print("err")
- 统计元素的个数:
#
name.count("abc") #统计元素 abc在列表中出现的次数
- 列表索引:
#
name.index("abc") # 打印出元素9的索引
count和index的结合使用小实例:
num_list = [1,2,3,44,55,24,56,357,9,432,9,5,555,9,22,9,345,34,34,34,34,1111111,34]
print(num_list)
num_9 = num_list.count(9)
print(num_9)
for i in range(num_9):
in_num = num_list.index(9)
num_list[in_num] = 99999
print(num_list) num_34 = num_list.count(34)
print(num_34)
for i in range(num_34):
in_num_34 = num_list.index(34)
del num_list[in_num_34]
print(num_list)
显示如下:
[1, 2, 3, 44, 55, 24, 56, 357, 9, 432, 9, 5, 555, 9, 22, 9, 345, 34, 34, 34, 34, 1111111, 34]
4
[1, 2, 3, 44, 55, 24, 56, 357, 99999, 432, 99999, 5, 555, 99999, 22, 99999, 345, 34, 34, 34, 34, 1111111, 34]
5
[1, 2, 3, 44, 55, 24, 56, 357, 99999, 432, 99999, 5, 555, 99999, 22, 99999, 345, 1111111] Process finished with exit code 0
- 列表追加(追加新列表)
#extend
name = ["aaa","bbb","ccc"]
name2 = ["ddd","eee","fff"] name.extend(name2)
print(name) ###显示如下:
['aaa', 'bbb', 'ccc', 'ddd', 'eee', 'fff'] Process finished with exit code 0
- 列表翻转:
name = ["aaa","bbb","ccc"]
name2 = ["ddd","eee","fff"]
name.reverse()
print(name) ##显示如下:
['ccc', 'bbb', 'aaa'] Process finished with exit code 0
- 列表排序:
name = ["bbb","aaa","ccc"]
name.sort()
print(name) ###显示如下
['aaa', 'bbb', 'ccc'] Process finished with exit code 0 ##python3.0中不允许数字与字符一起排序
- 列表复制:
name = ["bbb","aaa","ccc",[111,2222]]
print(name)
name2 = name.copy()
print(name2)
name[3][0]=3333 ##修改列表中所嵌套的列表的元素在比较
name[0] = "jjj" ##修改列表中的元素(非嵌套列表中的元素)
print(name)
print(name2) ###显示结果如下
['bbb', 'aaa', 'ccc', [111, 2222]]
['bbb', 'aaa', 'ccc', [111, 2222]]
['jjj', 'aaa', 'ccc', [3333, 2222]]
['bbb', 'aaa', 'ccc', [3333, 2222]] #一级中的数值没有随着变化 Process finished with exit code 0 #######总结如下########
name2 与 name 互相没有影响但是内部有嵌套的列表时则会有共享
copy 默认只copy第一层
- 列表长度
name = ["bbb","aaa","ccc",[111,2222]]
print(len(name)) ##显示
4
4.元组(不可变列表)
- 元组的声明:
name_t = ("abc","ddd","aaa")
- 元素个数统计
name_t.count("abc")
元组索引
name_t.index("abc")
5.字符串
- 移除空白:srtip()
name = input("please innsert your name:").strip() print(name)
- 字符串切分:
name = input("please innsert your name:").strip() name2 = name.split(",")
print(name2)
显示如下:
please innsert your name:1,q,www,eert,gtf,d
['', 'q', 'www', 'eert', 'gtf', 'd'] Process finished with exit code 0
拓展join在这的使用:如下
name = input("please innsert your name:").strip() name2 = name.split(",")
print(name2)
print("|".join(name2)) ##显示如下:输入的内容为 1,qwe,qwe,xcf,sdfsd,sds
please innsert your name:1,qwe,qwe,xcf,sdfsd,sds
['', 'qwe', 'qwe', 'xcf', 'sdfsd', 'sds']
1|qwe|qwe|xcf|sdfsd|sds #----拼接后的内容
- 判断是否存在:in
name = input("please innsert your name:").strip()
if " " in name :
print("有空格。。。")
else:
print("无空格。。。") ##显示如下: 输入为dsf ds,,sdfkjdfs .sfd
有空格。。。
- 首字符大写:
capitalize():即使中间有大写字符也要改成小写 如下输出
name = 'sdddDDFSFssd '
print(name.capitalize())
print(name) ###显示结果如下:
Sdddddfsfssd
sdddDDFSFssd Process finished with exit code 0
- 字符串的格式化
- 一般字符串格式化方法
user_name = input("plz insert your name: ")
user_age = int(input("plz insert your age: "))
user_add = input("plz insert your add: ") print(user_name,user_add,user_age)
msg = '''
Infomation of user : %s
************************
Name = %s
Age = %d
Add = %s
**********end***********
'''%(user_name,user_name,user_age,user_add)
print(msg) ###结果如下 plz insert your name: 赵文成
plz insert your age: 22
plz insert your add: 北京
赵文成 北京 22 Infomation of user : 赵文成
************************
Name = 赵文成
Age = 22
Add = 北京
**********end*********** Process finished with exit code 0
2.format方法格式化:
msg = "hello ,{name}, your age is {age},your addr is {add} ....."
msg2 = msg.format(name='zhaowencheng',age=26,add='beijing')
print(msg2) ##输出如下:
hello ,zhaowencheng, your age is 22,your addr is beijing ..... Process finished with exit code 0
- 切片 :同列表
name = '123456789abcde'
name1 = name[0]
print(name1)
name2 = name[6]
print(name2)
name3 = name[0:5]
print(name3)
name4 = name[0:5:2]
print(name4)
name5 = name[-1]
print(name5)
name6 = name[-5:]
print(name6) ###对应显示分别如下 1
7
12345
135
e
abcde
- center方法使用:
name = 'welcome to shop'
print(name.center(40,'-')) #显示如下: ------------welcome to shop-------------
- isdigit()方法使用:
num = input("please insert a number:")
if num.isdigit():
print("是数字")
else:
print("不是数字") ##显示的结果如下:
please insert a number:sdfsd
不是数字 please insert a number:sdfsd
不是数字
- a.endswith() a.startswith() -- 以XX结尾 XX开头
num = input("please insert a str:")
if num.endswith("m"):
print("以m结尾")
else:
print("....") #结果如下: please insert a str:sfdm
以m结尾 please insert a str:sdfsd
....
- upper() lower() 分别是吧字符串大写,小写
name3 = 'sdjfFsFFfj'
print(name3.upper().lower()) ##输出结果为 sdjffsfffj
6.字典
- 定义字典:
dic = {"key":"value"}
id = {
1: {"name": "aaa", "age": 23},
2: {"name": "bbb", "age": 24},
3: {"name": "ccc", "age": 25},
}
- 字典取值 两种方式取值分别如下
id = {
1: {"name": "aaa", "age": 23},
2: {"name": "bbb", "age": 24},
3: {"name": "ccc", "age": 25},
} print(id[1]["name"])
print(id.get(1).get("name")) ##打印内容为:
aaa
aaa
- 字典的添加(修改) 有就修改,没有就添加
id = {
1: {"name": "aaa", "age": 23},
2: {"name": "bbb", "age": 24},
3: {"name": "ccc", "age": 25},
} id[1] = {"name":"ddd","age":226}
print(id) ####
{1: {'name': 'ddd', 'age': 226}, 2: {'name': 'bbb', 'age': 24}, 3: {'name': 'ccc', 'age': 25}}
- 字典删除 del pop 如下del
id = {
1: {"name": "aaa", "age": 23},
2: {"name": "bbb", "age": 24},
3: {"name": "ccc", "age": 25},
} id[1] = {"name":"ddd","age":226}
print(id)
del id[1]
print(id) ####
{1: {'name': 'ddd', 'age': 226}, 2: {'name': 'bbb', 'age': 24}, 3: {'name': 'ccc', 'age': 25}}
{2: {'name': 'bbb', 'age': 24}, 3: {'name': 'ccc', 'age': 25}} Process finished with exit code 0
- 字典更新 update
如下: id中的值被id2中的对应key的值更新(前提是id2中的key在id中也存在)
id = {
1: {"name": "aaa", "age": 23},
2: {"name": "bbb", "age": 24},
3: {"name": "ccc", "age": 25},
}
id2 = {
1: {"name": "sss", "age": 23},
} id3 = id.update(id2)
print(id) ###输出如下:
{1: {'name': 'sss', 'age': 23}, 2: {'name': 'bbb', 'age': 24}, 3: {'name': 'ccc', 'age': 25}}
##可以看到结果中key为1 的value被id2给更新了
- 字典.items
id = {
1: {"name": "aaa", "age": 23},
2: {"name": "bbb", "age": 24},
3: {"name": "ccc", "age": 25},
}
id2=id[1]
print(id2.items()) ##输出结果
dict_items([('age', 23), ('name', 'aaa')]) Process finished with exit code 0
- 字典.keys
id = {
1: {"name": "aaa", "age": 23},
2: {"name": "bbb", "age": 24},
3: {"name": "ccc", "age": 25},
} print(id.keys()) ##输出如下:
dict_keys([1, 2, 3])
- 字典.value
id = {
1: {"name": "aaa", "age": 23},
2: {"name": "bbb", "age": 24},
3: {"name": "ccc", "age": 25},
} print(id.values()) ##输出如下
dict_values([{'name': 'aaa', 'age': 23}, {'name': 'bbb', 'age': 24}, {'name': 'ccc', 'age': 25}])
- 字典成员 in (2.0版本可用 has_key)
id = {
1: {"name": "aaa", "age": 23},
2: {"name": "bbb", "age": 24},
3: {"name": "ccc", "age": 25},
}
if 1 in id:
print("1 在id中") ## 输入如下:
1 在id中
- 字典 setdefault("key","v") --有值则取出 没有则值设置为v
id = {
1: {"name": "aaa", "age": 23},
2: {"name": "bbb", "age": 24},
3: {"name": "ccc", "age": 25},
} print(id.setdefault(4,"abc"))
print(id.setdefault(1,"abc"))
##
abc
{'age': 23, 'name': 'aaa'} Process finished with exit code 0
- 字典循环
##常用的循环取值方式如下:
id = {
1: {"name": "aaa", "age": 23},
2: {"name": "bbb", "age": 24},
3: {"name": "ccc", "age": 25},
}
print(id.items())
for k,v in id.items():
print(k,v) #此种方式过程中需要将字典转换为列表,如果数据量大的话则效率低 ##
for k in id:
print(k,id[k]) #相对效率高 ###打印结果如下:
1 {'name': 'aaa', 'age': 23}
2 {'name': 'bbb', 'age': 24}
3 {'name': 'ccc', 'age': 25}
1 {'name': 'aaa', 'age': 23}
2 {'name': 'bbb', 'age': 24}
3 {'name': 'ccc', 'age': 25} Process finished with exit code 0
字典enumerate
for item in enumerate(id):
print(item) ##结果如下
(0, 1)
(1, 2)
(2, 3) Process finished with exit code 0
三.运算符
- 算数运算
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 - 两个对象相加 | a + b 输出结果 30 |
- | 减 - 得到负数或是一个数减去另一个数 | a - b 输出结果 -10 |
* | 乘 - 两个数相乘或是返回一个被重复若干次的字符串 | a * b 输出结果 200 |
/ | 除 - x除以y | b / a 输出结果 2 |
% | 取模 - 返回除法的余数 | b % a 输出结果 0 |
** | 幂 - 返回x的y次幂 | a**b 为10的20次方, 输出结果 100000000000000000000 |
// | 取整除 - 返回商的整数部分 | 9//2 输出结果 4 , 9.0//2.0 输出结果 4.0 |
- 比较运算符
运算符 | 描述 | 实例 |
---|---|---|
== | 等于 - 比较对象是否相等 | (a == b) 返回 False。 |
!= | 不等于 - 比较两个对象是否不相等 | (a != b) 返回 true. |
<> | 不等于 - 比较两个对象是否不相等 | (a <> b) 返回 true。这个运算符类似 != 。 |
> | 大于 - 返回x是否大于y | (a > b) 返回 False。 |
< | 小于 - 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。 | (a < b) 返回 true。 |
>= | 大于等于 - 返回x是否大于等于y。 | (a >= b) 返回 False。 |
<= | 小于等于 - 返回x是否小于等于y。 | (a <= b) 返回 true。 |
- 赋值运算符
运算符 | 描述 | 实例 |
---|---|---|
= | 简单的赋值运算符 | c = a + b 将 a + b 的运算结果赋值为 c |
+= | 加法赋值运算符 | c += a 等效于 c = c + a |
-= | 减法赋值运算符 | c -= a 等效于 c = c - a |
*= | 乘法赋值运算符 | c *= a 等效于 c = c * a |
/= | 除法赋值运算符 | c /= a 等效于 c = c / a |
%= | 取模赋值运算符 | c %= a 等效于 c = c % a |
**= | 幂赋值运算符 | c **= a 等效于 c = c ** a |
//= | 取整除赋值运算符 | c //= a 等效于 c = c // a |
- 位运算符
运算符 | 描述 | 实例 |
---|---|---|
& | 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 | (a & b) 输出结果 12 ,二进制解释: 0000 1100 |
| | 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。 | (a | b) 输出结果 61 ,二进制解释: 0011 1101 |
^ | 按位异或运算符:当两对应的二进位相异时,结果为1 | (a ^ b) 输出结果 49 ,二进制解释: 0011 0001 |
~ | 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 | (~a ) 输出结果 -61 ,二进制解释: 1100 0011, 在一个有符号二进制数的补码形式。 |
<< | 左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。 | a << 2 输出结果 240 ,二进制解释: 1111 0000 |
>> | 右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数 | a >> 2 输出结果 15 ,二进制解释: 0000 1111 |
- 逻辑运算符
运算符 | 逻辑表达式 | 描述 | 实例 |
---|---|---|---|
and | x and y | 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 | (a and b) 返回 20。 |
or | x or y | 布尔"或" - 如果 x 是 True,它返回 True,否则它返回 y 的计算值。 | (a or b) 返回 10。 |
not | not x | 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 | not(a and b) 返回 False |
- 成员运算符
运算符 | 描述 | 实例 |
---|---|---|
in | 如果在指定的序列中找到值返回 True,否则返回 False。 | x 在 y 序列中 , 如果 x 在 y 序列中返回 True。 |
not in | 如果在指定的序列中没有找到值返回 True,否则返回 False。 | x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。 |
- 身份运算符
运算符 | 描述 | 实例 |
---|---|---|
is | is是判断两个标识符是不是引用自一个对象 | x is y, 如果 id(x) 等于 id(y) , is 返回结果 1 |
is not | is not是判断两个标识符是不是引用自不同对象 | x is not y, 如果 id(x) 不等于 id(y). is not 返回结果 1 |
- 运算符优先级
运算符 | 描述 |
---|---|
** | 指数 (最高优先级) |
~ + - | 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@) |
* / % // | 乘,除,取模和取整除 |
+ - | 加法减法 |
>> << | 右移,左移运算符 |
& | 位 'AND' |
^ | | 位运算符 |
<= < > >= | 比较运算符 |
<> == != | 等于运算符 |
= %= /= //= -= += *= **= | 赋值运算符 |
is is not | 身份运算符 |
in not in | 成员运算符 |
not or and | 逻辑运算符 |
文成小盆友python-num2 数据类型、列表、字典的更多相关文章
- 文成小盆友python-num7 -常用模块补充 ,python 牛逼的面相对象
本篇内容: 常用模块的补充 python面相对象 一.常用模块补充 1.configparser模块 configparser 用于处理特定格式的文件,起内部是调用open()来实现的,他的使用场景是 ...
- 文成小盆友python-num15 - JavaScript基础
一.JavaScript简介 JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的 ...
- 文成小盆友python-num5 -装饰器回顾,模块,字符串格式化
一.装饰器回顾与补充 单层装饰器: 如上篇文章所讲单层装饰器指一个函数用一个装饰器来装饰,即在函数执行前或者执行后用于添加相应的操作(如判断某个条件是否满足). 具体请见如下: 单层装饰器 双层装饰器 ...
- 文成小盆友python-num11-(2) python操作Memcache Redis
本部分主要内容: python操作memcache python操作redis 一.python 操作 memcache memcache是一套分布式的高速缓存系统,由LiveJournal的Brad ...
- 文成小盆友python-num12 Redis发布与订阅补充,python操作rabbitMQ
本篇主要内容: redis发布与订阅补充 python操作rabbitMQ 一,redis 发布与订阅补充 如下一个简单的监控模型,通过这个模式所有的收听者都能收听到一份数据. 用代码来实现一个red ...
- 文成小盆友python-num3 集合,函数,-- 部分内置函数
本接主要内容: set -- 集合数据类型 函数 自定义函数 部分内置函数 一.set 集合数据类型 set集合,是一个无序且不重复的元素集合 集合基本特性 无序 不重复 创建集合 #!/bin/en ...
- 文成小盆友python-num11-(1) 线程 进程 协程
本节主要内容 线程补充 进程 协程 一.线程补充 1.两种使用方法 这里主要涉及两种使用方法,一种为直接使用,一种为定义自己的类然后继承使用如下: 直接使用如下: import threading d ...
- 文成小盆友python-num4 装饰器,内置函数
一 .python 内置函数补充 chr() -- 返回所给参数对应的 ASCII 对应的字符,与ord()相反 # -*- coding:utf-8 -*- # Author:wencheng.z ...
- 文成小盆友python-num14 - web 前端基础 html ,css, JavaScript
本部分主要内容 html - 基础 css - 基础 一.html 标签 html 文档标签树如下: head 部分 Meta(metadata information) 提供有关页面的元信息,例:页 ...
随机推荐
- Java学习笔记--Collection和Collections的区别
转自 http://pengcqu.iteye.com/blog/492196 比较Collection 和Collections的区别. 1.java.util.Collection 是一个集合 ...
- (摘)ORACLE DBA的职责
ORACLE数据库管理员应按如下方式对ORACLE数据库系统做定期监控: (1). 每天对ORACLE数据库的运行状态,日志文件,备份情况,数据 库的空间使用情况,系统资源的使用情况进行检查,发现并解 ...
- 使用 ExpandableListView 实现折叠ListView
1:layout/expandablelistview_groups.xml 标题文件 <?xml version="1.0" encoding="utf-8&qu ...
- 测试一下PHP官方的新一代PHP加速插件ZendOpcache的性能及配置
过程不表,都比较顺利 参考如下URL: http://www.lvtao.net/server/ZendOpcache.html 大家知道目前PHP的缓存插件一般有三个:APC.eAccelerato ...
- 如何用VS2010打开VS2012编辑的项目
找到打开项目的开始图标:,右键点击,选择有文本编辑器打开,用下面的语句将文件里面的前两句替换掉.Microsoft Visual Studio Solution File, Format Versi ...
- Cmake Error: your compiler "cl" was not Found .etc
又是环境变量路径等问题,烦死人了. TIPS:请注意,控制台的窗口也有自己的环境变量,从系统环境变量和用户环境变量继承过来的,一个窗口(控制台)可以添加属于自己的环境变量(跟别的控制台窗口没关系) 解 ...
- scheme 解释器Guile 使用
GNU Guile是一种Scheme编程语言的解释器和虚拟机.Guile是GNU Ubiquitous Intelligent Language for Extensions的缩写.Guile是GNU ...
- 走进C++程序世界-------类的定义和使用(数据成员和方法成员,析构函数,构造函数,内联实现)
类的成员简介 在C++中,可以通过声明一个类来穿件一种新的类型.类将一组变量(他们的类型通常不同)和一组相关的函数组合在一起.类可以有各种类型的变量组成,还可以包含其他类对象.成员变量称为数据成员它们 ...
- vbox安装mac os x
http://zhiwei.li/text/2013/12/%E5%9C%A8virtualbox4-3-4%E4%B8%AD%E5%AE%89%E8%A3%85mavericks/ http://g ...
- java开源资源
开到一遍不错的java开源整理,摘录一下,后续遇到好的继续更新. 构建 这里搜集了用来构建应用程序的工具. Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置 ...