python中num*=2是什么意思_文成小盆友python-num2 数据类型、列表、字典

本文详细介绍了Python的运行机制,包括编译与解释的区别,以及PyCodeObject的作用。接着,文章深入探讨了Python的数据类型,如数字、布尔值和列表,并展示了列表的基本操作,如切片、修改、追加和删除元素。此外,还涵盖了元组、字符串的操作以及字典的使用,包括字典的添加、修改、删除和更新。最后,文章提到了Python中的运算符,包括算术、比较、赋值和逻辑运算符。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.先聊下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.创建列表方法:

1 #!/bin/env python

2 #-*- coding:utf-8 -*-

3

4 name = ["jack","stove","janny"]5

6 ###或者

7

8 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" inname: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 inrange(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 inrange(num_34):

in_num_34= num_list.index(34)delnum_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

['1', '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

['1', 'qwe', 'qwe', 'xcf', 'sdfsd', 'sds']1|qwe|qwe|xcf|sdfsd|sds #----拼接后的内容

判断是否存在:in

name = input("please innsert your name:").strip()if " " inname :print("有空格。。。")else:print("无空格。。。")##显示如下: 输入为dsf ds,,sdfkjdfs .sfd

有空格。。。

首字符大写:

capitalize():即使中间有大写字符也要改成小写 如下输出

name = 'sdddDDFSFssd'

print(name.capitalize())print(name)###显示结果如下:

Sdddddfsfssd

sdddDDFSFssd

Process finished with exit code 0

字符串的格式化

一般字符串格式化方法

1 user_name = input("plz insert your name:")2 user_age = int(input("plz insert your age:"))3 user_add = input("plz insert your add:")4

5 print(user_name,user_add,user_age)6 msg = '''

7 Infomation of user : %s8 ************************9 Name = %s10 Age = %d11 Add = %s12 **********end***********13 '''%(user_name,user_name,user_age,user_add)14 print(msg)15

16 ###结果如下

17

18 plz insert your name: 赵文成19 plz insert your age: 22

20 plz insert your add: 北京21 赵文成 北京 22

22

23 Infomation of user : 赵文成24 ************************

25 Name =赵文成26 Age = 22

27 Add =北京28 **********end***********

29

30

31 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 isbeijing .....

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

135e

abcde

center方法使用:

name = 'welcome to shop'

print(name.center(40,'-'))#显示如下:

------------welcome to shop-------------

isdigit()方法使用:

num = input("please insert a number:")ifnum.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

1 id ={2 1: {"name": "aaa", "age": 23},3 2: {"name": "bbb", "age": 24},4 3: {"name": "ccc", "age": 25},5 }6 id2=id[1]7 print(id2.items())8

9 ##输出结果

10 dict_items([('age', 23), ('name', 'aaa')])11

12 Process finished with exit code 0

字典.keys

1 id ={2 1: {"name": "aaa", "age": 23},3 2: {"name": "bbb", "age": 24},4 3: {"name": "ccc", "age": 25},5 }6

7 print(id.keys())8

9 ##输出如下:

10 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 inid:print("1 在id中")## 输入如下:

1 在id中

字典 setdefault("key","v")  --有值则取出  没有则值设置为v

1 id ={2 1: {"name": "aaa", "age": 23},3 2: {"name": "bbb", "age": 24},4 3: {"name": "ccc", "age": 25},5 }6

7

8 print(id.setdefault(4,"abc"))9 print(id.setdefault(1,"abc"))10 ##

11 abc12 {'age': 23, 'name': 'aaa'}13

14 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 inid.items():print(k,v) #此种方式过程中需要将字典转换为列表,如果数据量大的话则效率低

##

for k inid: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 inenumerate(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, 在一个有符号二进制数的补码形式。

<<

左移动运算符:运算数的各二进位全部左移若干位,由"<

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

逻辑运算符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值