Python学习 Week2 part1

本周内容较多,一时间消化不了,分两段写出来

part1:列表和元组

part2:字符串和字典等

列表

#列表的定义
#list=['list0','list1','list2'','...']
names=['zhangsan','lisi','wangwu','zhaoliu']

列表的操作

获取多个元素

#通过下标获取列表中的元素
#列表元素的下标从0开始
#list=[0,1,2,3,...]
names=['zhangsan','lisi','wangwu','zhaoliu']
>>>names[0]
'zhangsan'
>>>names[1]
'lisi'
>>>names[2]
'wangwu'
#从最后一个获取
>>>names[-1]
'zhaoliu'
>>>names[-2]
'wangwu'
#list[start:stop:step]
names=['zhangsan','lisi','wangwu','zhaoliu']
>>>names[1:]#从1开始到列表结束,等效于names[1:len(names)],names[1::]
['lisi', 'wangwu', 'zhaoliu']
>>>names[:1]#取列表第一个元素,等效于names[0:1],names[1]
['zhangsan']
>>>names[:]#取列表全部元素,等效于names[0:len[names]]
['zhangsan','lisi','wangwu','zhaoliu']
>>>names[::2]
['zhangsan', 'wangwu']#取列表全部元素,步长为2。等效于names[0::2],names[0:len(names):2],names[0:3:2](已知元素数量的情况下)
>>>names[::-1]#取全部元素,步长为-1(反向获取)
['zhaoliu', 'wangwu', 'lisi', 'zhangsan']

增加

#在列表末尾增加一个元素
names=['zhangsan','lisi','wangwu','zhaoliu']
names.append('abc')
print(names)

['zhangsan','lisi','wangwu','zhaoliu','abc']

插入

#在指定位置前插入一个元素
#在元素3前插入一个元素
names=['zhangsan','lisi','wangwu','zhaoliu']
names.insert(3,'abc')
print(names)
#在列表末尾元素前插入一个元素
names=['zhangsan','lisi','wangwu','zhaoliu']
names.insert(len(names)-1,'abc')
print(names)

#输出结果相同len(names)-1等于4-1等于3
['zhangsan', 'lisi', 'wangwu', 'abc', 'zhaoliu']

修改

#修改增加的abc为def
names=['zhangsan','lisi','wangwu','zhaoliu']
names.insert(3,'abc')
print(names)
names[3]='def'
print(names)

#输出结果
['zhangsan', 'lisi', 'wangwu', 'abc', 'zhaoliu']
['zhangsan', 'lisi', 'wangwu', 'def', 'zhaoliu']

删除

#方法1
#pop()不含参数,默认删除末尾的元素
names=['zhangsan','lisi','wangwu','zhaoliu']
names.pop()
print(names)
#输出结果
['zhangsan', 'lisi', 'wangwu']
#包含参数,删除对应下标的元素
names=['zhangsan','lisi','wangwu','zhaoliu']
names.pop(1)
print(names)
#输出结果
['zhangsan', 'wangwu', 'zhaoliu']

#方法2
#用del函数删除
del names[1]
#输出结果
['zhangsan', 'wangwu', 'zhaoliu']

#方法3
#list.remove(元素)
names.remove('lisi')
#输出结果
['zhangsan', 'wangwu', 'zhaoliu']

追加

#list1.extend(list2)将列表2的元素追加到列表1末尾
names=['zhangsan','lisi','wangwu','zhaoliu']
names1=[1,2,3]
names.extend(names1)
print(names)

#输出结果
['zhangsan', 'lisi', 'wangwu', 'zhaoliu', 1, 2, 3]

#注意:list1.extend(list2)和list1+list2都是将两个列表合并,但是extend的运算效率更高。

 统计

#统计列表中元素的数量
names=['zhangsan','lisi','wangwu','zhaoliu']
print(names.count('lisi'))

#输出结果
2

copy

#复制一个列表
names=['zhangsan','lisi','wangwu','zhaoliu']
names2=names.copy()
print(names)
print(names2)

#输入结果
['zhangsan', 'lisi', 'wangwu', 'zhaoliu']
['zhangsan', 'lisi', 'wangwu', 'zhaoliu']

#稍作修改
names=['zhangsan','lisi','wangwu','zhaoliu',[1,2,3]]
names2=names.copy()
print(names,names2)
names[-1][2]=5
print(names,names2)

#输出结果
['zhangsan', 'lisi', 'wangwu', 'zhaoliu', [1, 2, 3]] ['zhangsan', 'lisi', 'wangwu', 'zhaoliu', [1, 2, 3]]
['zhangsan', 'lisi', 'wangwu', 'zhaoliu', [1, 2, 5]] ['zhangsan', 'lisi', 'wangwu', 'zhaoliu', [1, 2, 5]]
#正常情况下对names进行修改,names2不会更改,但是更改names嵌
#套的列表值,为什么names2也改了?
#原来主列表只是存储了嵌套列表在内存中的地址,而不是所看到的数据,
#copy的也只是嵌套列表的地址,但两个地址指向的是内存中同一块区域,
#所以在对嵌套列表进行修改时,只是通过了两个复制地址而修改了真实数
#据,所以两个列表的元素都被改掉了。
#我们俗称浅copy。

#下面介绍另一种copy方法
#引用copy模块
import copy
names=['zhangsan','lisi','wangwu','zhaoliu',[1,2,3]]
names2=copy.copy(names)
print(names,names2)
names[-1][2]=5
print(names,names2)
#执行结果不变
#copy模块中的copy也是浅copy
#deepcopy才是深copy
import copy
names=['zhangsan','lisi','wangwu','zhaoliu',[1,2,3]]
names2=copy.deepcopy(names)
print(names,names2)
names[-1][2]=5
print(names,names2)
#输出结果
['zhangsan', 'lisi', 'wangwu', 'zhaoliu', [1, 2, 3]] ['zhangsan', 'lisi', 'wangwu', 'zhaoliu', [1, 2, 3]]
['zhangsan', 'lisi', 'wangwu', 'zhaoliu', [1, 2, 5]] ['zhangsan', 'lisi', 'wangwu', 'zhaoliu', [1, 2, 3]]
#这样就不会再改变了

排序和翻转

#按照大小正向排序
names=['zhangsan','lisi','wangwu','zhaoliu','1','2','3']
names.sort()
print(names)
#输出结果
['1', '2', '3', 'lisi', 'wangwu', 'zhangsan', 'zhaoliu']
#注意:不同类型的元素不可以排序。sort是一个可变对象的方法或者属性,不需要任何返回值,所以name2=names.sort()只能返回None值,不能把排序后的对象赋值。

#翻转列表
names=['zhangsan','lisi','wangwu','zhaoliu',1,2,3]
names.reverse
print(names)
#输出结果
[3, 2, 1, 'zhaoliu', 'wangwu', 'lisi', 'zhangsan']
#切片可以达到相同的效果,步长为-1
names1=['zhangsan','lisi','wangwu','zhaoliu',1,2,3]
names1=names1[::-1]
print(names1)
#输出结果
[3, 2, 1, 'zhaoliu', 'wangwu', 'lisi', 'zhangsan']

获取下标

#通过index方法获取下标
names=['zhangsan','lisi','wangwu','zhaoliu',1,2,3]
print(names.index('wangwu'))
#输出结果
2
#注意,这里只返回找到相同元素中第一个元素的下标

 元组

元组与列表相似,唯一不同的是,元组一旦创建,不可更改

元组只有index和count两种方法。

#元组使用圆括号
names=(zhangsan,lisi,wangwu,zhaoliu)

 简单应用

购物车程序

product_list = [
    ('iphone',5800),
    ('mac pro',12000),
    ('bike',800),
    ('book',120),
    ('coffee',31)
]
shopping_cart=[]
salary=input("please input yor salary")
if salary.isdigit():
    salary=int(salary)
    while True:
        for index,item in enumerate(product_list):
            #print(product_list.index(item),item)
            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_cart.append(p_item)
                    salary-=p_item[1]
                    print('added %s into shopping cart,your current balance is \033[31;1m%s\033[0m'%(p_item,salary))
                else:
                    print("\033[41;1m你的余额只剩[%s]啦\033[0m"% salary)
            else:
                print("product code [%s] is not exist"%user_choice)
        elif user_choice=='q':
            print('--------shopping list-----------')
            for p in shopping_cart:
                print(p)
            print('your current balance:',salary)
            exit()
        else:
            print('Error')
else:
    print('Bye Bye')
    exit()

 

(以上代码使用Python3.6.1编写,纯手敲,IDE:PyCharm)

 

以上是本周Python学习笔记part1。

如有错误的地方,欢迎指正,互相学习!

 

Life is short,you need Python!

人生苦短,我用Python!

 

当你发现自己的才华撑不起野心的时候,就安静下来学习吧~

posted @ 2017-06-19 09:40  Kiwi_He  阅读(294)  评论(0)    收藏  举报

欢迎访问Kiwi的个人博客!