day 04

list 相关函数

len(list) 返回列表长度

list.index("")  根据内容查找第一个元素,返回下标,找不到报错。

与字符串不同的是,list没有 find 方法。可能是因为列表本身是动态的原因。

☆ 复制,和赋值的区别

1. 列表可以通过 list.copy() 方法以及切片 list[:] 返回一个与原列表相同的列表;

2. 另外,如果把原列表赋值给一个新的变量,那么新列表也与原列表相等。

但两种方式在python解释器中的处理机制不同:

列表的值是储存在堆里,而非变量中。变量在栈里,内部存的是一个指向相应列表值在堆中的坐标(地址)。

因此,第一种方式,会在堆中开辟一块新的地方来储存。第二种是把变量的坐标(地址)给了新变量。验证两种方式的方法:改变原始列表,方法1的新列表值不变,方法2 的新列表值随之变化。

list1 = [1,2,3,4,5]

list2 = list1
list3 = list1.copy()
list4 = list1[:]

list1.append("hehe")
print(list1) >> [1,2,3,4,5,"hehe"]
print(list2) >> [1,2,3,4,5,"hehe"]
print(list3) >> [1,2,3,4,5]
print(list4) >> [1,2,3,4,5]
2. 列表的遍历

list1 = [1,2,3]

for i in list1:
    print(i) >> 1\n 2\n 3\n
3. 元组tuple

用小括号括起来。类似JS数组,值不变,安全性高。

tuple1 = (1,2,3,4)
没有 增,删,改的功能。只有查:

t1 = (1,2,3)

a,b,c = t1 >> a=1,b=2,c=3
a = t1 >> 报错
a,b,c,d = t1 >> 报错
可以通过下标获得元素 tuple[i]

4. 字典 dict

用花括号括起来,内部是键值对形式,不允许重复值,可以加重复值,但无意义也不报错。

d = {"name":"xiaoming","age":"18"}
# d["newKey"] = value
d["sex"] = "Lady"

d = {"name":"xiaoming","age":"18"}
# del d["key"]
del d["name"] >> {"age":"18"}

与增加元素相同

d = {"name":"xiaoming","age":"18"}
# 1. d["key"]
print(d["name"]) >> xiaoming

# 2. d.get("key")
print(d.get("name"))
字典中排列顺序并不是按照输入顺序,它有一套自己的玩法,从而使得查询速度极快。

5. eval() 方法

将字符串转换为列表或者字典(长得像谁就转成谁)。注意转字典时,字符串的引号和字典的键值对引号要区分。

6. 小练习,分别用 list 和 dict 制作通讯录系统

list版:

name = ["中国移动","中国电信"]
phone = [10086,10000]
while True:
    print('''=======通讯录管理系统=======
1.增加姓名和手机
2.删除姓名
3.修改手机
4.查询所有用户
5.根据姓名查找手机号
6.退出
============================''')
    x = input("请输入:")
    if x == "1":
        n = input("请输入姓名:")
        p = input("请输入手机:")
        name.append(n)
        phone.append(p)
        print("增加成功!")
    elif x == "2":
        n = input("请输入姓名:")
        try:
            i = name.index(n)
        except ValueError as e:
            print("查无此人,返回初始界面")
        else:
            name.pop(i)
            phone.pop(i)
            print("已成功删除!")
    elif x == "3":
        n = input("请输入姓名:")
        try:
            i = name.index(n)
        except ValueError as e:
            print("查无此人,返回初始界面")
        else:
            m = input("请输入手机:")
            phone[i] = m
    elif x == "4":
        print("所有联系人:")
        for i,j in enumerate(name):
            print(j, ":", phone[i])
    elif x == "5":
        n = input("请输入姓名:")
        print(phone[name.index(n)])
    elif x == "6":
        print("成功退出!")
        break
    else:
        print("输入有误,请重新输入!")
dict版:

dic = {"中国移动":10086,"中国电信":10000}
def sys(x):
    if x=="1":
        set(inp_name(),inp_phone())
    elif x=="2":
        delete(inp_name())
    elif x=="3":
        find(inp_name())
    elif x=="4":
        allUser()
    else:
        print("\tError!输入有误,请重新输入!")
def inp_name():
    name = input("请输入姓名:")
    return name
def inp_phone():
    phone = input("请输入手机:")
    return phone

def set(name,phone):
    dic[name] = phone
    print("\t已成功修改!")
    return dic
def delete(name):
    try:
        del dic[name]
    except KeyError as e:
        print("\tError 查无此联系人!")
    else:
        print("\t已成功删除!")
        return dic
def allUser():
    print(dic)
def find(name):
    try:
        print(dic[name])
    except KeyError as e:
        print("\tError 查无此联系人!")
def exit():
    pass
while True:
    print('''>============通讯录系统===============<
    请输入:
    增加/修改手机号···· 输入:1
    删除联系人·······输入:2
    查找联系人·······输入:3
    查看通讯录·······输入:4
    退出通讯录·······输入:5
>====================================<''')
    x = input(">")
    if x=="5":
        print("成功退出!")
        break
    sys(x)



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值