zoukankan      html  css  js  c++  java
  • python3基础3

    1、列表

    列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。

    列表的数据项不需要具有相同的类型

    定义列表

    list1 = ['physics', 'chemistry', 1997, 2000]
    list2 = [1, 2, 3, 4, 5 ]
    list3 = ["a", "b", "c", "d"]

    通过下标访问列表中的元素,下标从0开始计数

    print(list1[0])
    >>physics
    print(list1[2])
    >>1997
    print(list1[-1])#负数表示从后面倒着取
    >>2000
    print(list1[-2])
    >>1997

    切片:去多个元素(列表切片取元素包括前面但不包括后面)

    >>> list1 = ['physics', 'chemistry', 1997, 2000,1, 2, 3, 4, 5,"a", "b", "c", "d"]
    >>> list1[1:4]  #取下标1至4之间的元素,但不包括4
    ['chemistry', 1997, 2000]
    >>> list1[1:-1] #取下标1至-1之间元素,但不包括-1即最后一个元素
    ['chemistry', 1997, 2000, 1, 2, 3, 4, 5, 'a', 'b', 'c']
    >>> list1[0:3]
    ['physics', 'chemistry', 1997]
    >>> list1[:3]  #如果从头开始取,0可以忽略
    ['physics', 'chemistry', 1997]
    >>> list1[3:]  #如果想取最后一个元素,就必须不能写-1
    [2000, 1, 2, 3, 4, 5, 'a', 'b', 'c', 'd']
    >>> list1[3:-1]  #写了-1最后一个元素取不到
    [2000, 1, 2, 3, 4, 5, 'a', 'b', 'c']
    >>> list1[0::2]  #后面的2是代表每隔一个元素就取一个
    ['physics', 1997, 1, 3, 5, 'b', 'd']
    >>> list1[::2]   #和上面效果相同
    ['physics', 1997, 1, 3, 5, 'b', 'd']
    元素追加
    >>> list1
    ['physics', 'chemistry', 1997, 2000, 1, 2, 3, 4, 5, 'a', 'b', 'c', 'd']
    >>> list1.append("xiaoming")  #append方法表示元素追加
    >>> list1
    ['physics', 'chemistry', 1997, 2000, 1, 2, 3, 4, 5, 'a', 'b', 'c', 'd', 'xiaoming']

    元素插入

    >>> l=[1,2,3,4,5,6,7,8]
    >>> l.insert(2,9) #insert表示插入,2和9表示在下标为2的前面插入9这个数字
    >>> l
    [1, 2, 9, 3, 4, 5, 6, 7, 8]

    元素修改

    >>> l
    [1, 2, 9, 3, 4, 5, 6, 7, 8]
    >>> l[2]="xiaoming"  #修改元素时通过下标找到元素直接修改
    >>> l
    [1, 2, 'xiaoming', 3, 4, 5, 6, 7, 8]

    元素删除

    >>> l
    [1, 2, 'xiaoming', 3, 4, 5, 6, 7, 8]
    >>> del l[2]  #删除下标为2的元素
    >>> l
    [1, 2, 3, 4, 5, 6, 7, 8]
    >>> del l[5]  #删除下标为5的元素
    >>> l
    [1, 2, 3, 4, 5, 7, 8]
    >>> l.remove(7)  #删除指定下标为7的元素
    >>> l
    [1, 2, 3, 4, 5, 8]
    >>> l.pop()  #删除列表最后一个值
    8
    >>> l
    [1, 2, 3, 4, 5]

    元素扩展

    >>> l
    [1, 2, 3, 4, 5]
    >>> b=[7,8,9,10]
    >>> l.extend(b)  #extend扩展
    >>> l
    [1, 2, 3, 4, 5, 7, 8, 9, 10]

    元素拷贝(?)

    >>> l
    [1, 2, 3, 4, 5, 7, 8, 9, 10]
    >>> l_copy=l.copy()
    >>> l_copy
    [1, 2, 3, 4, 5, 7, 8, 9, 10]

    元素统计

    >>> l
    [1, 1, 2, 3, 4, 5, 6]
    >>> l.count(1)
    2
    >>> l.count(2)
    1

    元素排序(3.0中不同数据类型不能放在一起排序)

    >>> names=['xiaoming','jack','amy','tom',1,2,3]
    >>> names.sort()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: unorderable types: int() < str()
    >>> names[-1]='3'
    >>> names[-2]='2'
    >>> names[-3]='1'
    >>> names
    ['amy', 'jack', 'tom', 'xiaoming', '1', '2', '3']
    >>> names.sort() #相同类型进行排序
    >>> names
    ['1', '2', '3', 'amy', 'jack', 'tom', 'xiaoming']
     

    元素反转

    >>> names
    ['1', '2', '3', 'amy', 'jack', 'tom', 'xiaoming']
    >>> names.reverse()  #反转
    >>> names
    ['xiaoming', 'tom', 'jack', 'amy', '3', '2', '1']

    获取下标

    >>> names
    ['xiaoming', 'tom', 'jack', 'amy', '3', '2', '1']
    >>> names.index('tom')
    1  #返回元素的下标,如果列表中这个元素有多个只返回找到的第一个下标

    2、元组

    Python的元组与列表类似,不同之处在于元组的元素不能修改。

    元组使用小括号,列表使用方括号。

    元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

    语法:

    names = ("xiaoming","jack","eric")

    由于元组不能修改所以只有两个方法:count和index。

    购物车程序练习:

    • 启动程序后,让用户输入工资,然后打印商品列表

    • 允许用户根据商品编号购买商品

    • 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 

    • 可随时退出,退出时,打印已购买商品和余额

      salary=int(input("请输入您的工资:"))
      shopping_list=["衬衫","牛仔裤","牛肉","咖啡","手表"]
      price_list=[100,500,50,300,10000]
      shopping=[]
      for i in shopping_list:
          print(shopping_list.index(i)+1,"",i,"[",price_list[shopping_list.index(i)],"元]")
      while True:
          customer_chose=input("请输入您想购买的物品序列号:")
          if customer_chose=='q':
              exit("已购商品为%s,所余额为%s"%(shopping,salary))
          else:
              customer_chose=int(customer_chose)
              if salary >= price_list[customer_chose - 1]:
                  print("剁手成功,恭喜您获得宝贝%s" % shopping_list[customer_chose - 1])
                  salary=salary-price_list[customer_chose-1]
                  shopping.append(shopping_list[customer_chose-1])
              elif salary < price_list[customer_chose - 1]:
                  print("不好意思您的余额为%s不够购买此商品!!!!"%salary)
      还有很多问题慢慢优化!!!

    3、字典

    字典是另一种可变容器模型,且可存储任意类型对象。

    字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中,键必须是唯一的,但值则不必。

    值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。

    • 字典的特性:

      • 字典是无序的

      • key必须是唯一的

    语法:

    dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
    • 增加

      >>> dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
      >>> dict['xiaoming']='12345'  #直接添加key和value的值
      >>> dict
      {'Alice': '2341', 'xiaoming': '12345', 'Beth': '9102', 'Cecil': '3258'}
    • 修改

      >>> dict
      {'Alice': '2341', 'xiaoming': '12345', 'Beth': '9102', 'Cecil': '3258'}
      >>> dict['Beth']='12345' #根据key值来修改value的值
      >>> dict
      {'Alice': '2341', 'xiaoming': '12345', 'Beth': '12345', 'Cecil': '3258'}
    • 删除

      >>> dict
      {'Alice': '2341', 'xiaoming': '12345', 'Beth': '12345', 'Cecil': '3258'}
      >>> dict.pop('Alice') #根据key值删除
      '2341'
      >>> dict
      {'xiaoming': '12345', 'Beth': '12345', 'Cecil': '3258'}
      >>> del dict['xiaoming']  #根据key值删除
      >>> dict
      {'Beth': '12345', 'Cecil': '3258'}
      >>> dict.popitem() #随机删除
      ('Beth', '12345')
      >>> dict
      {'Cecil': '3258'}
    • 查找

      >>> dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
      >>> 'Alice'in dict  #标准用法
      True
      >>> dict.get('Beth') #get获取
      '9102'
      >>> dict['Beth']  #key值获取
      '9102'
      >>> dict['xiaoming']  #用key值获取不存在的key时会报错
      Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
      KeyError: 'xiaoming'
      >>> dict.get('xiaoming') #用get获取不存在的key值时什么都不返回
      >>>
    • 多级字典操作

      d={
          "美国":{
              "www.facbook":["大家可以互相交流的网站!!","比较不错!"],
              "http://www.yahoo.com":["提供多元化服务!","挺好的!!"]
          },
          "中国":{
              "www.baidu.com":["国内知名搜索网站!!","我喜欢!!"],
              "wwww.sogou.com":["国内不错的搜索网站!!","经常使用!!"]
          }
      }
      d["中国"]["www.baidu.com"][1]+="希望毕业可以进入这样的大公司!!"
      print(d["中国"]["www.baidu.com"])
      结果为:
      ['国内知名搜索网站!!', '我喜欢!!希望毕业可以进入这样的大公司!!']
    • 获得value

      >>> dict
      {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
      >>> dict.values()
      dict_values(['2341', '9102', '3258'])
    • 获得key值

      >>> dict
      {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
      >>> dict.keys()
      dict_keys(['Alice', 'Beth', 'Cecil'])
    • 添加字典值

      >>> dict.setdefault('xiaoming','12345')
      '12345'
      >>> dict
      {'Alice': '2341', 'xiaoming': '12345', 'Beth': '9102', 'Cecil': '3258'}
    • 更新字典值

      >>> dict
      {'Alice': '2341', 'xiaoming': '12345', 'Beth': '9102', 'Cecil': '3258'}
      >>> b={1:2,3:4,'Beth':'12345'}
      >>> dict.update(b)
      >>> dict
      {1: 2, 3: 4, 'Beth': '12345', 'Alice': '2341', 'xiaoming': '12345', 'Cecil': '3258'}
    • 获得key和value

      >>> dict.items()
      dict_items([(1, 2), (3, 4), ('Beth', '12345'), ('Alice', '2341'), ('xiaoming', '12345'), ('Cecil', '3258')])
    • 循环字典

      方法一:
      for key in d:
          print(key,d[key])
      运行结果为:
      中国 {'www.baidu.com': ['国内知名搜索网站!!', '我喜欢!!希望毕业可以进入这样的大公司!!'], 'wwww.sogou.com': ['国内不错的搜索网站!!', '经常使用!!']}
      美国 {'www.facbook': ['大家可以互相交流的网站!!', '比较不错!'], 'http://www.yahoo.com': ['提供多元化服务!', '挺好的!!']}
      方法二:
      for k,v in d.items():
          print(k,":",v)
       运行结果为:
      中国 {'wwww.sogou.com': ['国内不错的搜索网站!!', '经常使用!!'], 'www.baidu.com': ['国内知名搜索网站!!', '我喜欢!!希望毕业可以进入这样的大公司!!']}
      美国 {'www.facbook': ['大家可以互相交流的网站!!', '比较不错!'], 'http://www.yahoo.com': ['提供多元化服务!', '挺好的!!']}
    • 三级菜单程序练习

      • 打印省、市、县三级菜单

      • 可返回上一级

      • 可随时退出程序

        dict1={
            "河北省":{
                "石家庄市":['井陉县','正定县', '栾城县' ,'行唐县', '灵寿县','高邑县',' 深泽县',' 赞皇县 ','无极县',' 平山县', '元氏县 ','赵县', '辛集市',' 藁城市'],
                "沧州市":['沧县',' 青县',' 东光县', '海兴县',' 盐山县', '肃宁县',' 南皮县', '吴桥县', '献县', '孟村县', '泊头市', '任丘市', '黄骅市', '河间市' ],
                "邯郸市":['邯郸县', '临漳县', '成安县', '大名县', '涉县', '磁县', '肥乡县', '永年县', '邱县', '鸡泽县', '广平县', '馆陶县', '魏县', '曲周县', '武安市']
            },
            "山东省":{
            "济南市":['历下区','市中区','槐荫区','天桥区','历城区'],
            "青岛市":['市南区', '市北区', '四方区', '黄岛区'],
            "德州市":['陵县', '宁津县', '齐河县', '武城县', '庆云县']
        }
        }
        print(dict1)
        while True:
            for k in dict1.keys():
                print(k)
            cus_chose=input("请输入您想查询的省份:")
            if cus_chose== 'b':
                break
            elif cus_chose == 'q':
                exit()
            else:
                while True:
                    if cus_chose in dict1:
                        for i in dict1[cus_chose]:
                            print(i)
                        cus_chose1=input("请输入您想要查询的市:")
                        if cus_chose1=='b':
                            break
                        elif cus_chose1=='q':
                            exit()
                        else:
                            while True:
                                if cus_chose1 in dict1[cus_chose]:
                                    for j in dict1[cus_chose][cus_chose1]:
                                        print(j)
        ​
                                    cus_chose2 = input("最后一层了!!输入b返回上一层,输入q退出:")
        ​
                                    if cus_chose2 == 'b':
                                            break
                                    elif cus_chose2 == 'q':
                                         exit()
        比较low还有一些问题存在!!!
  • 相关阅读:
    POJ1486 Sorting Slides 二分图or贪心
    POJ2060 Taxi Cab Scheme 最小路径覆盖
    POJ3083 Children of the Candy Corn 解题报告
    以前的文章
    POJ2449 Remmarguts' Date K短路经典题
    这一年的acm路
    POJ3014 Asteroids 最小点覆盖
    POJ2594 Treasure Exploration 最小路径覆盖
    POJ3009 Curling 2.0 解题报告
    POJ2226 Muddy Fields 最小点集覆盖
  • 原文地址:https://www.cnblogs.com/pythonbigdata/p/8390934.html
Copyright © 2011-2022 走看看