时隔如此之久才写了入门2,真是不太好意思了。
- 列表、元组
首先,列表和元组都是有序的,元组可以理解成只读的列表(const),列表用'[',元组用'('。
#! /usr/bin/env python
# Author: JackyHou
names = ["zhangsan", "lisi", "wangwu"]
names.append("lijingyi")#后加
names.insert(1, "xiaolizi")
# print(names[0:2])#左闭右开
#
# print(names[-1])#从右开始数
# print(names[-3:])#冒号后不写东西, 就是右边第三个直到最后全部
# print(names[:3])
print(names)
#delete
#方法1
# names.remove("xiaolizi")
# print(names)
#方法2
# del names[1]
# print(names)
#方法3
# names.pop()#可带参数
# print(names)
#find
print(names.index("xiaolizi"))
print(names.pop(names.index("xiaolizi")))
print(names)
#count
names.append("lijingyi")
print(names.count("lijingyi"))
#reverse
names.reverse()
print(names)
#sort
names.sort()
print(names)
#extend
names2 = [1, 2, 4, 5]
names.extend(names2)
del names2
print(names)
在使用列表时要注意一个地方:关于浅拷贝和深拷贝的问题
浅拷贝:copy
深拷贝:deepcopy
他们的的区别在于当列表是多级列表时,浅拷贝和直接赋值会使两个对象的二级列表的指针指向同一个对象(即任何操作都会在两个对象上反应出来,一损俱损一荣俱荣),而深拷贝才是平时所理解的拷贝(完全拷贝)
#! /usr/bin/env python
# -*- coding:utf-8 -*-
# Author: JackyHou
import copy
person = ['name', ['saving', 100]]
# p1 = copy.copy(person)
# p2 = person[:]
# p3 = list(person)
p1 = person[:]
p2 = person[:]
p1[0] = 'hjq'
p2[0] = 'ljy'
p1[1][1] = 50
print(p1)
print(p2)
[1, ['equal', 2, 4], 4]
[1, ['equal', 2, 4], 4]
[1, ['equal', 'copy', 4], 4]
[1, ['equal', 'copy', 4], 4]
[1, ['equal', 'copy', 4], 4]
[1, ['equal', 'copy', 'deepcopy'], 4]
- String的基本操作
#! /usr/bin/env python
# Author: JackyHou
name = "my name is {name}, I'm {year}."
print(name.capitalize())
print(name.count('a'))
print(name.center(50, '*'))
print(name.endswith("ou"))
print(name.expandtabs(30))
print(name.find('is'))
print(name.format(name='JackyHou', year=22))
print(name.format_map({'name': 'JackyHou', 'year': 22}))
print(name.isalnum())
print('abc123'.isalnum())
print('abcABC'.isalpha())
print('1A'.isdecimal())
print('_1a'.isidentifier())#判断是不是一个合法的标识符
print('abc'.islower())#是不是小写
print('22.11'.isnumeric())#纯数字
print(name.isspace())
print('My Name Is'.istitle())
print('My Name is'.isprintable())#tty file, drive file
print("My Name is".isupper())
print(':'.join(['1', '2', '3']))
print(name.ljust(50, '*'))
print(name.rjust(50, '*'))
print("Jacky".lower())
print("Jacky".upper())
print(' \nhaha'.lstrip())
print('haha \n'.rstrip())
print(' hha '.strip())
la = str.maketrans("abcdef", '123456')
print("JackyHou".translate(la))
print(name.replace('m', '1', 2))
print('hahahxhahahxha'.rfind('x'))#从右边开始找
print('hah hah haha ah'.split(' '))#分割
print('hahah+dkfjal\njldafjlad'.splitlines())#行分割
print('JackyHou'.swapcase())#反向大小写
print('hah hah ha'.title())
print('jacky hou'.zfill(50))
- 字典
#! /usr/bin/env python
# Author: JackyHou
#key-value
info = {
'stu1101': "TengLan Wu",
'stu1102': "LongZe Luola",
'stu1103': "XiaoZe Maliya",
}
print(info)
#print(info["stu1101"])
info["stu1101"] = "武藤兰"
info["stu1104"] = "CangJingkong"
print(info)
#del info["stu1101"]
# info.pop("stu1101")
# info.popitem()#随机删一个
# print(info)
#find
print(info.get('stu1105'))
print('stu1105' in info)
b = {
'stu1101': "Rihana",
1: 3,
4: 5,
}
info.update(b)
print(info)
c = dict.fromkeys([6, 7, 8], [1, {"name": "alex"}, 444])
print(c)
c[7][1]['name'] = "Jack Chen"#这是一个坑!!!!!!!!!!! fromkeys函数会把后面的当成一个整体,所以改了一个就全部都改了
print(c)
print(info.items())
#高效
for i in info:
print(i, info[i])
#低效
for k, v in info.items():
print(k, v)
- 三级菜单
#! /usr/bin/env python
# Author: JackyHou
# data = {
# '北京': {
# "沙河": ["oldboy", "test"],
# "天通苑": ["链家地产", "我爱我家"]
# },
# "朝阳": {
# "望京": ["奔驰", "陌陌"],
# "国贸": ["CICC", "HP"],
# "东直门": ["Advent", "飞信"],
# },
#
# }
data = {
'北京': {
'海淀': {
'五道口': {
'soho': {},
'网易': {},
'google': {}
},
'中关村': {
'爱奇艺': {},
'汽车之家': {},
'youku': {},
},
'上地': {
'百度': {},
},
},
'昌平': {
'沙河': {
'老男孩': {},
'北航': {},
},
'天通苑': {},
'回龙观': {},
},
'朝阳': {},
'东城': {},
},
'上海': {
'闵行': {
"人民广场": {
'炸鸡店': {}
}
},
'闸北': {
'火车战': {
'携程': {}
}
},
'浦东': {},
},
'山东': {},
}
exit_flag = False
while not exit_flag:
#第一层菜单
for i in data:
print(i)
choice = input("SELECT>>>>>:")
if choice in data:
while not exit_flag:
#第二层菜单
for j in data[choice]:
print("\t", j)
choice2 = input("SELECT>>>>>:")
if choice2 in data[choice]:
while not exit_flag:
#第三层菜单
for k in data[choice][choice2]:
print("\t\t", k)
choice3 = input("SELECT>>>>>:")
if choice3 in data[choice][choice2]:
for n in data[choice][choice2][choice3]:
print("\t\t\t", n)
choice4 = input("INPUT 'b' TO BACK")
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
if choice == 'b':
break
elif choice == 'q':
exit_flag = True
注意pass的用法:
其实没啥用。pass是空语句,为了保持程序结构的完整性。不做任何事情,
一半用作占位语句。
一半用作占位语句。