Python基础学习笔记(3)

列表 list

python 的列表可以保存n个数据,并且每个数据的类型可以任意(在其他语言中这是不允许的)


namelist = ["Hello",123,3.14]


>>> name = ["haha",123,3.14,"Hello"]
>>> name
['haha', 123, 3.14, 'Hello']
>>> type(name)
<class 'list'>
>>> name[0]
'haha'
>>> name[1]
123
>>> name[2]
3.14
>>> 

列表打印:遍历

>>> names = ["Hello",123,"王先森",3.14]
>>> for i in names:
...     print(i)
... 
Hello
123
王先森
3.14
>>> 

>>> i=0
>>> while i<len(names):
...     print(names[i])
...     i+=1
... 
Hello
123
王先森
3.14
>>> 

花名册 demo1(错误)

[root@lUsmwg108555 python]# cat list
#!/root/.pyenv/shims/python3
#coding=utf-8
i=1
names=["王先森",123,3.14,"Hello","hehe","haha"]
length=len(names)
myname=input("请输入你的用户名:")
while i<length:
    if names[i]==myname:
	    print("恭喜,系统中已经有该用户了")
    else:
	    print("Sorry,系统未找到该用户")
    i+=1

[root@lUsmwg108555 python]# ./list
请输入你的用户名:dfdf
Sorry,系统未找到该用户
Sorry,系统未找到该用户
Sorry,系统未找到该用户
Sorry,系统未找到该用户
Sorry,系统未找到该用户
[root@lUsmwg108555 python]# ./list
请输入你的用户名:haha
Sorry,系统未找到该用户
Sorry,系统未找到该用户
Sorry,系统未找到该用户
Sorry,系统未找到该用户
恭喜,系统中已经有该用户了
[root@lUsmwg108555 python]# 

花名册 demo2

[root@lUsmwg108555 python]# cat list-1 
#!/root/.pyenv/shims/python3
#coding=utf-8

#定义一个花名册列表
names=["王先森",123,3.14,"Hello","hehe","haha"]
length=len(names)

#获取要查找的用户名
myname=input("请输入你的用户名:")
i=0
findFlag=0

#判断用户名是否存在
while i<length:
    if names[i]==myname:
	    findFlag=1
    i+=1
if findFlag==1:
    print("恭喜,系统中已经有该用户了")
else:
    print("Sorry,系统未找到该用户")

[root@lUsmwg108555 python]# ./list-1 
请输入你的用户名:fdfd
Sorry,系统未找到该用户
[root@lUsmwg108555 python]# ./list-1 
请输入你的用户名:王先森
恭喜,系统中已经有该用户了
[root@lUsmwg108555 python]# 

元素的 增、删、改、查

<1> 添加元素("增"append,extend,insert)

>>> mystr=["123","aaa"]
>>> mystr.append("hehe")
>>> mystr
['123', 'aaa', 'hehe']
>>> mystr.insert(1,"bbb")
>>> mystr
['123', 'bbb', 'aaa', 'hehe']
>>> names
['Hello', '', '王先森', 3.14]
>>> mystr.extend(names)
>>> mystr
['123', 'bbb', 'aaa', 'hehe', 'Hello', '', '王先森', 3.14]
>>> mystr.append(names)
>>> mystr
['123', 'bbb', 'aaa', 'hehe', 'Hello', '', '王先森', 3.14, ['Hello', '', '王先森', 3.14]]
>>>

<2> 删除元素("删"del,pop,remove)

  • del:根据下标进行删除
  • pop(弹栈):删除最后一个元素
  • remove:根据元素的值进行删除

  • 先进先出叫队列(地铁安检),先进后出称为栈(坐电梯)

>>> names
['Hello', 'World', '王先森有点宅', '123', '3.14']
>>> del names[3]
>>> names
['Hello', 'World', '王先森有点宅', '3.14']
>>> names.pop()
'3.14'
>>> names
['Hello', 'World', '王先森有点宅']
>>> names.remove("World")
>>> names
['Hello', '王先森有点宅']
>>> 

<3> 修改元素

>>> mystr
['123', 'bbb', 'aaa', 'hehe', ['Hello', '', '王先森', 3.14]]
>>> mystr[0]=321
>>> mystr
[321, 'bbb', 'aaa', 'hehe', ['Hello', '', '王先森', 3.14]]
>>> 

<4> 查找元素("查"in,not in,index,count)

  • in(存在),如果存在则为返回True,否则返回False
  • not in(不存在),如果不存在则为返回True,否则返回False

[root@lUsmwg108555 python]# cat findname 
#!/root/.pyenv/shims/python3
#coding=utf-8

#定义一个列表
namelist=["haha","hehe","王先森",123,3.14]

#获取用户名

username=input("请输入你的用户名:")
#查找用户名

if username in namelist:
    print("该用户已存在")
else:
    print("查无此人,已添加")

print("-"*20)
namelist.append(username)
print(namelist)

[root@lUsmwg108555 python]# ./findname 
请输入你的用户名:fd
查无此人,已添加
--------------------
['haha', 'hehe', '王先森', 123, 3.14, 'fd']
[root@lUsmwg108555 python]# ./findname 
请输入你的用户名:haha
该用户已存在
--------------------
['haha', 'hehe', '王先森', 123, 3.14, 'haha']
[root@lUsmwg108555 python]#  
  • index(返回下标)和 count 与字符串中的用法相同,这里就不记录了

学生管理系统

[root@lUsmwg108555 python]# cat system 
#!/root/.pyenv/shims/python3
#coding=utf-8

#输出系统提示信息

userlist=[]
while True:
    print("="*40)

    print("		欢迎进入学生管理系统")
    print("1: 添加一名学生的名字")
    print("2: 删除一名学生的名字")
    print("3: 修改一名学生的名字")
    print("4: 查找一名学生的名字")
    print("5: 遍历当前所有名字")
    print("0: 退出系统")

    print("="*40)

    #获取用户操作信息
    num=input("请输入您需要操作的序号:")

    #执行判断

    if num=="1":
	    username=input("请输入学生的姓名:")
	    userlist.append(username)
    elif num=="2":
	    username=input("请输入学生的姓名:")
	    userlist.remove(username)
    elif num=="3":
	    username=input("请输入学生的姓名:")
	    key=userlist.index(username)
	    newname=input("请输入修改后的学生姓名:")
	    userlist[key]=newname
    elif num=="4":
	    username=input("请输入学生的名字:")
	    if username in userlist:
		    print("该学生已在此管理系统登记")
	    else:
		    print("查无此人")
    elif num=="5":
	    print("")
    elif num=="0":
	    break
    print("-"*50)
    print(userlist)


[root@lUsmwg108555 python]# 

排序 sort、reverse

  • sort方法是将list按特定顺序重新排列,默认为由小到大,
    参数 reverse=True 可改为倒序,由大到小。
  • reverse 方法是将 list 逆序(非排序)

>>> mylist=[123,32,44,12,444,67,45321,3546]
>>> mylist
[123, 32, 44, 12, 444, 67, 45321, 3546]
>>> mylist.sort()
>>> mylist
[12, 32, 44, 67, 123, 444, 3546, 45321]
>>> mylist.sort(re
repr(      return     reversed(  
>>> mylist.sort(reverse=True)
>>> mylist
[123, 32, 44, 12, 444, 67, 45321, 3546]
>>> mylist.reverse()
>>> mylist
[3546, 45321, 67, 444, 12, 44, 32, 123]
>>> 

列表嵌套

需求:一个学校,有3个办公室,现在有8位老师等待工位的分配,请编写程序,完成随机分配

[root@lUsmwg108555 python]# ./room 
办公室1里边的教师姓名是:
C D H 
办公室2里边的教师姓名是:
E F 
办公室3里边的教师姓名是:
A B G 
[root@lUsmwg108555 python]# cat room 
#!/root/.pyenv/shims/python3
#coding=utf-8
#1.定义一个空间集
import random

rooms=[[],[],[]]

#2.定义教师列表
Teacherlist=["A","B","C","D","E","F","G","H"]


#3.随机把教师的名字分配到空间集里

for name in Teacherlist:
    randomNum=random.randint(0,2)
    rooms[randomNum].append(name)

i=1      #for是没有记录第几次循环的功能
for room in rooms:
    print("办公室%d里边的教师姓名是:"%i)
    for name in room:
	    print(name,end=" ")
    print("")
    i+=1

[root@lUsmwg108555 python]# 

元组(tuple)

Python的元组与列表类似,不同之处在于 元组的元素不能修改(包括删除)。元组使用小括号,列表使用中括号

>>> names=("hehe","haha",3.14,123)
>>> names
('hehe', 'haha', 3.1400000000000001, 123)
>>> type(names)
<type 'tuple'>
>>> name=(3.14)
>>> type(name)
<type 'float'>
>>> name=(3.14,)
>>> type(name)
<type 'tuple'>
>>> name
(3.1400000000000001,)
>>> name.append("hehe")
Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'append'
>>> 

字典(dict)

字典用大括号存储数据

  • dict 和 list 一样,也能存储多个数据
  • list 中找某个元素时,也是根据下标进行的
  • dict 中找某个元素时,是根据 '名字' (就是冒号前的那个值)
  • dict 的每个元素由2部分组成,键:值。

>>> name={"name":"王先森","sex":"男"}
>>> name["name"]
'王先森'
>>> type(name)
<class 'dict'>
>>> len(name)
2
>>> name["name"]="Mr.wang"
>>> name
{'name': 'Mr.wang', 'sex': '男'}
>>> 

访问不存在的值时会报错

>>> name
{'name': 'Mr.wang', 'sex': '男'}
>>> name["age"]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'age'

解决方法:在我们不确定字典中是否存在某个键而又想获取其值时,可以用 get 方法,还可以设置默认值。

>>> age = name.get("age")
>>> age  # "age" 键不存在,所以age为None
>>> type(age)
<class 'NoneType'>
>>> age=name.get("age",10)  #若name中不存在age,则返回默认值
>>> age
10
>>> 

dict 的增删改查

>>> name
{'Hobby': 'Computer', 'sex': '男', 'name': '王先森'}
>>> name["High"]="171cm"     #增加
>>> name
{'Hobby': 'Computer', 'sex': '男', 'High': '171cm', 'name': '王先森'}
>>> name
{'Hobby': 'Computer', 'sex': '男', 'High': '171cm', 'name': '王先森'}

删除:del 和 clear
del 可删除单个元素,不指定键值时删除整个dict
clear 则是清空dict

>>> Names={"name":"王先森","sex":"男","Hobby":"Computer"}
>>> Names
{'name': '王先森', 'sex': '男', 'Hobby': 'Computer'}
>>> a=Names
>>> a
{'name': '王先森', 'sex': '男', 'Hobby': 'Computer'}
>>> Names
{'name': '王先森', 'sex': '男', 'Hobby': 'Computer'}
>>> del a["sex"]    #删除
>>> a
{'name': '王先森', 'Hobby': 'Computer'}
>>> Names
{'name': '王先森', 'Hobby': 'Computer'}
>>> 

>>> a
{'name': '王先森', 'Hobby': 'Computer'}
>>> Names
{'name': '王先森', 'Hobby': 'Computer'}
>>> a.clear()
>>> a
{}
>>> Names
{}
>>> 

dict 查找

>>> Names={"name":"王先森","sex":"男","Hobby":"Computer"}
>>> len(Names)      #键值对的个数
3
>>> Names={"name":"王先森","sex":"男","Hobby":"Computer"}
>>> len(Names)
3
>>> Names.keys()
dict_keys(['name', 'sex', 'Hobby'])
>>> Names.values()
dict_values(['王先森', '男', 'Computer'])
>>> Names.items()
dict_items([('name', '王先森'), ('sex', '男'), ('Hobby', 'Computer')])
>>> 

判断是否有key: has_key

遍历

字符串遍历

>>> mystr="Hello World"
>>> for i in mystr:
...     print(i,end=" ")
... 
H e l l o   W o r l d >>> 

列表遍历

>>> mystr=["Hello","World","123"]
>>> for i in mystr:
...     print(i,end=" ")
... 
Hello World 123 >>> 

元组遍历

>>> mystr=("Hello","3.14","World")
>>> for n in mystr:
...     print(n,end=" ")
... 
Hello 3.14 World >>>

字典遍历

>>> mystr={"name":"王先森","sex":"man","High":"171"}
>>> for tmp in mystr.keys():
...     print(tmp,end=" ")
... 
name sex High >>> 
>>> 
>>> for tmp in mystr.values():
...     print(tmp,end=" ")
... 
王先森 man 171 >>> 
>>> 
>>> for tmp in mystr.items():
...     print(tmp,end=" ")
... 
('name', '王先森') ('sex', 'man') ('High', '171') >>> 
>>> 

>>> for a,b in mystr.items():
...     print(a)
...     print(b)
... 
name
王先森
sex
man
High
171
>>> 

enumerate

for循环 默认是不记录循环次数的,但可以用enumerate

>>> mystr=["a","b","c","d","e"]
>>> for i,j in enumerate(mystr):
...     print(i,j)
... 
0 a
1 b
2 c
3 d
4 e
>>> 
comments powered by Disqus