文成小盆友python-num2 数据类型列表字典

Posted 文成小盆友

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文成小盆友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.创建列表方法: 

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" 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
[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 " " 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
  • 字符串的格式化
  1. 一般字符串格式化方法
 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 : %s
 8 ************************
 9     Name = %s
10     Age = %d
11     Add = %s
12 **********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 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
 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 in id:
    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 abc
12 {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 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
  • 比较运算符
以上是关于文成小盆友python-num2 数据类型列表字典的主要内容,如果未能解决你的问题,请参考以下文章

文成小盆友python-num4 内置函数

文成小盆友python-num17 - django基础

文成小盆友python-num7 -常用模块补充 ,python 牛逼的面相对象

9月3日 文成小盆友python-num18 - django进阶一

文成小盆友python-num8 面向对象中的成员,成员修饰符,特殊成员,异常处理,设计模式之单例模式

围圈圈

(c)2006-2024 SYSTEM All Rights Reserved IT常识

运算符描述实例
== 等于 - 比较对象是否相等 (a == b) 返回 False。
!= 不等于 - 比较两个对象是否不相等 (a != b) 返回 true.
<> 不等于 - 比较两个对象是否不相等 (a <> b) 返回 true。这个运算符类似 != 。
> 大于 - 返回x是否大于y (a > b) 返回 False。
<