python之旅--数据类型

Posted wangzihong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python之旅--数据类型相关的知识,希望对你有一定的参考价值。

列表操作

 1 >>> info = [1,2,a,b,python]
 2 >>> print(info)
 3 [1, 2, a, b, python]
 4 >>> print(info[0],info[2])
 5 1 a
 6 >>> print(info[1:3]) #切片
 7 [2, a]
 8 >>> print(info[3])
 9 b
10 >>> print(info[-1]) #取最后一个
11 python
12 >>> print(info[-2:]) #取最后两个值 从左到右 省略掉最后面的
13 [b, python]
14 >>> print(info[:3]) #前面是零可以省略
15 [1, 2, a]
16 >>> #追加 插入
17 ... info.append("c")
18 >>> print(info)
19 [1, 2, a, b, python, c]
20 >>> info.insert(4,"d")
21 >>> print(info)
22 [1, 2, a, b, d, python, c]
23 >>> #删除
24 ... info.remove("a")
25 >>> print(info)
26 [1, 2, b, d, python, c]
27 >>> del info[1] #按下标删除
28 >>> print(info)
29 [1, b, d, python, c]
30 >>> info.pop() #删除最后一个
31 c
32 >>> print(info)
33 [1, b, d, python]
34 >>> #查询位置
35 ... print(info.index("python"))
36 3
37 >>> #统计
38 ... print(info.count("b"))
39 1
40 #扩展
41 >>> info2 = [3,"e"]
42 >>> info.extend(info2)
43 >>> print(info)
44 [1, b, d, python, 3, e]
45 #删除变量
46 >>> del info2

深浅copy
 1 >>> import copy #导入copy模块
 2 >>> list1 = ["a","b",["c","d"],"java"] #列表中可以嵌套列表
 3 >>> print(list1)
 4 [a, b, [c, d], java]
 5 >>> list2 = list1.copy() #浅copy
 6 >>> print(list2)
 7 [a, b, [c, d], java]
 8 >>> list3 = copy.deepcopy(list1) #深copy 需要导入copy模块
 9 >>> print(list3)
10 [a, b, [c, d], java]
11 >>> list4 = list1 #赋值
12 >>> print(list4)
13 [a, b, [c, d], java]
14 >>> list1[3] = "python" #修改列表父对象
15 >>> list1[2][0] = "v" #修改列表子对象
16 >>> print(list1) #打印修改后的列表
17 [a, b, [v, d], python]
18 >>> print(list2) #只拷贝父对象,不会拷贝对象的内部的子对象 子对象会改变
19 [a, b, [v, d], java]
20 >>> print(list3) #完全复制 拷贝对象及其子对象
21 [a, b, [c, d], java]
22 >>> print(list4)
23 [a, b, [v, d], python]
#联名账户 账户中余额都可以看到 账户名不改变
>>> person = ["name",["saving",100]]
>>> p1 = person[:]
>>> p2 = person[:]
>>> p1[0] = "A"
>>> p2[0] = "B"
>>> p1[1][1] = 50  #两个人都可以看到账号余额改变
>>> print(p1)
[A, [saving, 50]] #各自的账号名 余额同步改变
>>> print(p2)
[B, [saving, 50]]

 

 元组

存一组数据,一旦创建便不能修改,所以又叫只读列表

只有两个方法:index 和 count

>>> names = (a,b,c,a)
>>> names.count(a)
2
>>> names.index(a)
0
>>> names.index(a,2)
3

程序练习

程序:购物车程序

需求:

  1.启动程序后,让用户输入工资,然后打印商品列表。

  2.允许用户根据商品编号购买商品。

  3.用户选择商品后,检测余额是否够,够直接扣钱,不够提醒。

  4.可随时退出,退出时,打印已购买商品和余额。

product_list = [
    (iphone,5800),
    (mac pro,12000),
    (bike,800),
    (watch,10600),
    (coffee,33)
]
shopping_list = []
salary = input("input your salary:")
if salary.isdigit():  #判断是否整数
    salary = int(salary)
    while True:
        #for item in product_list:
            #print(product_list.index(item),item)

        for index,item in enumerate(product_list): #enumerate打出列表的下标
            print(index,item)
        user_choice = input("选择买>>>")
        if user_choice.isdigit():
            user_choice = int(user_choice)
            if user_choice < len(product_list) and user_choice >= 0:
                p_item = product_list[user_choice]
                if p_item[1] <= salary:
                    shopping_list.append(p_item)
                    salary -= p_item[1]
                    print("Added %s into shopping cart,your current balanec is \033[31;1m%s\033[0m" %(p_item,salary))
                else:
                    print("you balance is too small ")
        elif user_choice == q:
            print("---shopping list---")
            for p in shopping_list:
                print(p)
            print("your crrent balance:",salary)
            exit()
        else:
            print("invalid option")

字符串操作

>>> name = "my name is python"
>>> name.capitalize() #首字母大写
My name is python
>>> name.count("a") #计数
1
>>> name.center(50,"-") #50个字符,不够的用-补足
----------------my name is python-----------------
>>> name.endswith("on") #判断以什么结尾
True
>>> name.expandtabs(tabsize=30) #tab键长度
my name is python
>>> name.find("name") #查找 从哪个开头
3
>>> name[name.find("name")] #字符串切片
n
>>> name.index("a")
4
>>> print(ab123.isalnum()) #是不是一个阿拉伯数字
True
>>> "my name is {name}".format(name="test") #格式化输出
my name is test
>>> "my name is {name}".format_map({name:test}) #格式化输出
my name is test
>>> print(abC.isalpha()) #纯英文字符
True
>>> print(1A.isdecimal()) #是否十六进制
False
>>> print(123.isdigit()) #是否一个整数
True
>>> print(name.isidentifier()) #判断是不是一个合法的标识符
True
>>> print(a.islower()) #是否小写
True
>>> print(22.isnumeric()) #是不是一个数字
True
>>> print(My Name Is .istitle()) #首字母大写
True
>>> print(My Name Is.isprintable()) #是否可以打印 tty file drive file不能打印
True
>>> print(A.isupper()) #是否大写
True
>>> print(‘‘.join([1,2,3])) #列表转换为字符串
123
>>> print(+.join([1,2,3])) #列表转换为字符串
1+2+3
>>> name.ljust(50,"*") #长度50 不够的右边补*
my name is python*********************************
>>> name.rjust(50,"*") #长度50 不够的左边补*
*********************************my name is python
>>> print(Abc.lower()) #变成小写
abc
>>> print(Abc.upper()) #变成大写
ABC
>>> print(  Abc \n  .lstrip()) #去除左边的空格和回车
Abc

>>> print(  Abc \n  .rstrip()) #去除右边的空格和回车
  Abc
>>> print(  Abc \n  .strip()) #去除两边的空格和回车
Abc
>>> print("python".translate(str.maketrans("abpth",12345))) #一一对应替换
3y45on
>>> print("python python".replace("p","P",1)) #替换 最后一个参数为替换数量
Python python
>>> print("python python".rfind("y")) #找到最右边值的下标
8
>>> print("py th on".split()) #按照空格分成列表
[py, th, on]
>>> print("py th on".split("t")) #按照传参分成列表
[py , h on]
>>> print(1+2\n+3+4.splitlines()) #按换行分成列表
[1+2, +3+4]
>>> print("python python".swapcase()) #全部转换为大写
PYTHON PYTHON
>>> print("python python".title()) #转换为标题
Python Python
>>> print("python".zfill(50)) #补位
00000000000000000000000000000000000000000000python

字典操作

字典是一种key - value的数据类型。

>>> #语法
... #字典是无序的 (没有下标)
... info = {
...     stu01:A,
...     stu02:B,
...     stu03:C
... }
>>> #通过key取值 查询
... info[stu01]
A
>>> info[stu04] #需要确定有这个值用这种方法,没有会报错
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: stu04
>>> info.get(stu04) #没有值时用get 不报错
>>> #修改
... info[stu01] = D #里面有数值直接修改
>>> info[stu04] = E #里面没有直接添加
>>> info
{stu04: E, stu01: D, stu02: B, stu03: C}
>>> #del 删除
... del info["stu04"]  #删除key为stu04的数据
>>> info
{stu01: D, stu02: B, stu03: C}
>>> info.pop("stu01") #删除stu01
D
>>> info
{stu02: B, stu03: C}
>>> info.popitem() #随机删除
(stu02, B)
>>> info
{stu03: C}
>>> del info #删除字典
>>> info
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name info is not defined

>>> #字典操作
... info1 = {
...     stu01:A,
...     stu02:B,
...     stu03:C
... }
>>>
>>> info2 = {
...     stu01:a,
...     stu04:D
... }
>>>
>>> info1.update(info2) #合并修改
>>> info1
{stu04: D, stu01: a, stu02: B, stu03: C}
>>> info1.items() #把一个字典转换为列表
dict_items([(stu04, D), (stu01, a), (stu02, B), (stu03, C)])
>>> info3 = dict.fromkeys([1,2,3],"test") #初始化一个字典 三个key共享一个内存地址
>>> info3
{1: test, 2: test, 3: test}
>>>
>>> #多级字典嵌套及操作
... menu = {
...     "北京":{
...         "海淀":五道口,
...         "昌平":沙河
...     },
...     "上海":{
...         "闵行":人民广场
...     }
... }
>>> menu.setdefault("深圳",{"罗湖":"东门"}) #没有增加新的数据
{罗湖: 东门}
>>> menu
{北京: {海淀: 五道口, 昌平: 沙河}, 上海: {闵行: 人民广场}, 深圳: {罗湖: 东门}}
>>>
>>> #字典的循环
... for i in info1:
...     print(i,info1[i])
...
stu04 D
stu01 a
stu02 B
stu03 C
>>> #把字典转换为列表 效率不高
... for k,v in info1.items():
...     print(k,v)
...
stu04 D
stu01 a
stu02 B
stu03 C

 




以上是关于python之旅--数据类型的主要内容,如果未能解决你的问题,请参考以下文章

Python的学习之旅———基本数据类型(字符编码)

Python之旅:数据类型

Python学习之旅 基本数据类型

python之旅--数据类型

Python的学习之旅———基本数据类型

python之旅:数据类型字符编码文件处理