学习Python基础--------2
1.列表和元组操作
列表用[]中括号存储,通过逗号来区分个元素
1 names=[] 2 names = ['zhangsan','lisi','wangwu','zhangmazi','erdan']
print(names)
如果想获取列表的元素,需要按元素下标来获取元素
注意下标是从左到右从0开始计数,所以第一个元素的下标是0,也可以从右到左从-1开始
print(names[0],names[2] #zhangsan wangwu
print(names[-1],names[-2]) #erdan zhamhmazi
获取连续的多个元素,切片
names=['zhiyu','zhangsan','lisi','wangwu','amy','tom']
names[1:4]
#取下标1到4的包括1不包括4 ['zhangsan','lisi','wangwu']
names[1:-1]
#取1到-1的值不包括-1['zhangsan','lisi','wangwu','amy']
names[0:4]
['zhiyu','zhangsan','lisi','wangwu']
names[:4]
['zhiyu','zhangsan','lisi','wangwu'] #如果从头开始取0可以忽略
names[3:] #如果想取最后一个,必须不能写-1,只能这么写
['wangwu','amy','tom']
names[3:-1] #这样-1就不会被包含了
['wangwu','amy']
names[0::2] #后面的2是代表,每隔一个元素,就取一个
['zhiyu','lisi','amy']
names[::2] #和上句效果一样
['zhiyu','lisi','amy']
追加 append方法添加
names=['zhiyu','zhangsan','lisi','wangwu','amy','tom'] names.append('XINDE') print(names) #['zhiyu','zhangsan','lisi','wangwu','amy','tom','XINDE']
插入 insert(位置,元素)
names.insert(1,'chengronghua' ) names.insert(3,'xinzhiyu')
#['zhiyu','chengronghua','zhangsan','xinzhuyu','lisi','wangwu','amy','tom','XINDE']
修改
names[2]=zhiyu
['zhiyu','chengronghua','zhiyu','xinzhuyu','lisi','wangwu','amy','tom','XINDE']
删除
names.remove("chengronghua") del names[3]
['zhiyu','zhiyu','xinzhuyu','wangwu','amy','tom','XINDE']
names.pop()#默认不输入下标删除最后一个值 输入下标删除下标的元素
查
print(names.index('zhiyu')) #查找某元素的下标 print(names[names.index('zhiyu')]) #取出元素
函数count , clear ,reverse,sort,extend
print(names.count('chengronghua'))#重复元素的计数 #names.clear()#清空列表 #names.reverse()#反转列表的顺序 #names.sort() #排序按照字母顺序 >特殊符号> 数字 > 大写> 小写 按照acsii码规则排序 print(names) names2=[1,2,3,4] names.extend(names2)#合并names和names2
拷贝
names = ["4zhangyang","#!guyun","xianpeng",['alcx','jack'],"Chengronghua","xuliangchen"]
name2 = names.copy() #浅拷贝 拷贝第一层 下一层只拷贝内存地址
print(name2,)
["4zhangyang","#!guyun","xianpeng",['alcx','jack'],"Chengronghua","xuliangchen"]
print(names)
["4zhangyang","#!guyun","xianpeng",['alcx','jack'],"Chengronghua","xuliangchen"]
names[2] = '项鹏'
names[3][0] = '苏值'
print(name2)
["4zhangyang","#!guyun","xianpeng",['苏值','jack'],"Chengronghua","xuliangchen"]#没有修改name2[3][0]的值为什么还会变浅拷贝 拷贝第一层 下一层只拷贝内存地址
print(names)
["4zhangyang","#!guyun","项鹏",['苏值','jack'],"Chengronghua","xuliangchen"]
name2 = person[:]#完全切片
name3 = list(person)#工厂函数
#深拷贝
name2 = copy.deepcopy(names) #完全克隆
元组
元组和列表差不多 ,它一旦创建便不能修改,所以叫做只读列表用小括号表示
names = ("alex","jack","eric")
它只有两个方法count 和index
练习作业 购物车
# Author:Zhiyu Su product_list=[ ("iphone",5800), ("mac por", 9800), ("bike", 800), ("watch", 10600), ("alexpython", 120), ("coffee", 31) ] shopping_list=[] salary = input("input your salay:") if salary.isdigit():#字符串形式的数字返回为真 salary = int(salary) while True: for index,item in enumerate(product_list):#enumerate 取元素的下标 #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_list.append(p_item) print(shopping_list) salary-= p_item[1] print("added%s into shopping cart your crent balance is \033[31;1m%s\033[0m" %(p_item,salary)) #字体红色 \033[31;1m**\033[0m else: print("\033[41;1m你的余额只剩[%s]啦,还买个毛线\033[0m"%salary) else: print("不存在[%s]"% user_choice) elif user_choice == 'q': print("-----------shopping list--------------") for p in shopping_list: print(p) print("your current balance:",salary) exit() else: print("sojdioj")
字符串操作
# Author:Zhiyu Su name = "my \tname is {name} and i am {year}" print(name.capitalize())#首字母大写 print(name.count("a")) #统计出现的数字 print(name.center(50,"-")) #-----------------my name is alex------------------ print(name.endswith("ex")) #判断字符串以什么结尾 True print(name.find("name"))#找出字符的索引 print(name.format(name="alex",year=23))#my name is alex and i am 23 print(name.format_map({'name':"alex","year":12})) #以字典形式输出 print("1234".isalnum() ) #包含小数和数字 print('abA'.isalpha()) #包含字母 print('121423'.isdecimal())#是不是十进制 print('12'.isdigit()) #判断是否是整数 print('!A'.isidentifier())#是否是合法的变量名 print('22'.isnumeric()) #只有数字不包含其他字符 print('My Name Is '.istitle()) #首字母大写 print('my name is '.isprintable())#tty file drive file 时是能打印的 print('my name is '.isupper()) #是否是大写 print(','.join(['1','2','3','4'])) #列表换字符 print(name.ljust(50,"*")) #字符长50不够用星号补 print(name.rjust(50,"-")) print('Alex'.lower()) print('Alex'.upper()) print('\nAlex'.lstrip()) #从左边去空格或回车符 print('Alex\n'.rstrip()) #右 print('\nAlex\n'.strip()) #全 p = str.maketrans('abcdef','123456') #加密 print('alex li'.translate(p)) print('alex li'.replace('l','L',1)) #替换 print('alex li '.rfind('l')) #找到最后一个字母 print('1+1+2+3 '.split('+')) #把字符按**当成分割符 print('alex\n li '.splitlines())#识别不同系统的换行 print('Alex Li '.swapcase()) #大写变小写 小写变大写 print('alex li '.title()) #首字母大写 print('alex li '.zfill(50)) #位数不够用0补
字典操作
字典一种key - value 的数据类型,可以通过key的索引找到value key是唯一的不能重复也是无序的
用大括号括起来
info = {58
'su1':'zhangsan',
'su2':'lisi',
'su3':'wangergou'
}
#取值
print(info['su1'])
#修改
info['su1']='张三'
info['su4']='erdan'#如果存在修改不存在创建
#删除del
del info[su1]
info.pop('su1')
info.popitem()#随机删除
print(info.get('su3')) #查找获取
print('su3' in info) #判断是否存在 返回 True和Flse info.has_key('su3')in py2.x
#update
b={
'su1':'suyu',
1:3,
2:5
}
info.update(b)#相同的合并不同的创建
{'su1':'shuyu','su2':'lisi',1:3,'su3':'wangergou',2:5}
#items
print(info.items())#字典转换成列表
#fromkeys
c=dict.fromkeys([6,7,8],[1,{'name':'alex'},444]) #初始化创建一个字典 多层地址共享
{6:[1,{'name':'alex'},444],7:[1,{'name':'alex'},444],8:[1,{'name':'alex'},444]}
c[7][1]['name']='jackchen'
{6:[1,{'name':'jackchen'},444],7:[1,{'name':'jackchen'},444],8:[1,{'name':'jackchen'},444]}
字典的循环
for i in info: #高效 print(i,info[i]) for k,v in info.items(): #将字典转换为列表然后遍历 print(k,v)
使用字典编写的三级菜单
# Author:Zhiyu Su data= { '北京':{ '昌平':{ '沙河':['oldboy','test'], '天通宛':['链家地产','我爱我家'] }, '朝阳':{ '望京':['奔驰',"陌陌"], '国贸':{'CICC','HP'}, '东直门':{'Advent','飞信'}, }, "海淀":{'wu'} }, '山东':{ '德州':{1}, '青岛':{2}, '济南':{3} }, '广东':{ '东莞':{4}, '常熟':{4}, '佛山':{5} } } exit_flag = False while not exit_flag: for i in data: print(i) choice = input('选择进入1》》》') if choice in data: while not exit_flag: for i2 in data[choice]: print('\t',i2) choice2= input("选择2》》") if choice2 in data[choice]: while not exit_flag: for i3 in data[choice][choice2]: print('\t', i3) choice3 = input("选择进入3》》》") if choice3 in data[choice][choice2]: for i4 in data[choice][choice2][choice3]: print('\t\t',i4) choice4= input("选择4》》》》") if choice4 == 'b': pass elif choice4 == 'q': exit_flag = True if choice3 == 'b': break elif choice3 == 'q': exit_flag = True if choice2 == 'b': break elif choice2 == 'q': exit_flag = True

浙公网安备 33010602011771号