zoukankan      html  css  js  c++  java
  • Python两个列表元素比较

    Python两个列表元素的对比经常遇到,如何正确的比较?

    知识点:列表解析。

    详解:

    列表解析 List Comprehensions

    表达式:[expression for iter_val in iterable if cond_expr]

    • [expression]:最后执行的结果
    • [for iter_val in iterable]:这个可以是一个多层循环
    • [if cond_expr]:两个for间是不能有判断语句的,判断语句只能在最后;顺序不定,默认是左到右。

    代码操作:

    current_names = ["java","go","selenium","appium","python"]
    new_users = ["java","go","javascript","HTTP","C++"]
    
    current_names = [current_name.lower() for current_name in current_names]
    new_users = [new_user.lower() for new_user in new_users]
    
    for new_user in new_users:
        if new_user in current_names:
            print(new_user + " 用户名已被使用")
        else:
            print(new_user + " 用户名可以使用")

    运行结果:

    java 用户名已被使用
    go 用户名已被使用
    javascript 用户名可以使用
    http 用户名可以使用
    c++ 用户名可以使用

    拓展练习:

    设置微博名时,常会遇到"用户名已被占用"情况,那么如何使用Python进行简单的实现?

    设计思路:

    1、设置一个列表,用于存储全网用户名称(新名称则添加、替换名称则自动删除)

    2、用户提交名称时,列表进行一次查询,查看是否有重复,并做相关提示

    3、不区分大小写,即:PYTHON/Python/python/pYTHOn....默认是一个名字,提交会提醒重复。

    代码如下:

     1 """
     2 
     3 current_names = ["solo", "James", "echo", "JOY", "Tump", "AOBAMA", "新浪新闻", "新浪NEWS",
     4                  "新浪NBA", "ChinaNEWS"]  # 随意列举几个
     5 
     6 Num_Time = 0 #定义编辑次数,大于3次则退出
     7 
     8 while Num_Time <= 3:
     9 
    10     user_name = input("Please input your name:")
    11     user_name = user_name.lower()
    12     new_users = []
    13     new_users.append(user_name)
    14 
    15     current_names = [current_name.lower() for current_name in current_names]  # 列表解析
    16     new_users = [new_user.lower() for new_user in new_users]
    17 
    18     if user_name in current_names:
    19         print(user_name + "用户名称已被占用,请重试。")
    20         Num_Time += 1
    21 
    22     else:
    23         print(user_name + "用户名可以使用,请提交。")
    24         current_names.append(user_name)
    25         print("当前用户名为:" + user_name)
    26         print("用户名称列表: " + str(current_names))
    27         break

    运行结果:

    Please input your name:solo
    solo用户名称已被占用,请重试。
    Please input your name:nbs
    nbs用户名可以使用,请提交。
    当前用户名为:nbs
    用户名称列表: ['solo', 'james', 'echo', 'joy', 'tump', 'aobama', '新浪新闻', '新浪news', '新浪nba', 'chinanews', 'nbs']
    
    Process finished with exit code 0

    1、如果修改不成功,不计入累积次数

    2、如果修改成功,限制次数为3次

    3、打印出目前列表

    代码:

     1 current_names = ["solo", "James", "echo", "JOY", "Tump", "AOBAMA", "新浪新闻", "新浪NEWS",
     2                  "新浪NBA", "ChinaNEWS"]  # 随意列举几个
     3 
     4 Num_Time = 0 #定义编辑次数,大于3次则退出
     5 
     6 while Num_Time <= 3:
     7 
     8     user_name = input("Please input your name:")
     9     user_name = user_name.lower()
    10     new_users = []
    11     new_users.append(user_name)
    12 
    13     current_names = [current_name.lower() for current_name in current_names]  # 列表解析
    14     new_users = [new_user.lower() for new_user in new_users]
    15 
    16     if user_name in current_names:
    17         print(user_name + "用户名称已被占用,请重试。")
    18         # Num_Time += 1  #如果是修改不成功,那么不算修改次数,直接不要累计就行了
    19 
    20     else:
    21         print(user_name + "用户名可以使用,请提交。")
    22         current_names.append(user_name)
    23         print("当前用户名为:" + user_name)
    24         Num_Time += 1
    25         # break
    26         if Num_Time >=3:
    27             print("每人一年内只能修改3次!")#3次是针对成功修改的操作
    28             break
    29 
    30 print("用户名称列表: " + str(current_names))

    打印结果:

    1、如果多次输入错误,不会对累积用影响。

    2、成功修改三次后,跳出程序

    3、打印出当前列表元素

     1 Please input your name:solo
     2 solo用户名称已被占用,请重试。
     3 Please input your name:solo
     4 solo用户名称已被占用,请重试。
     5 Please input your name:solo
     6 solo用户名称已被占用,请重试。
     7 Please input your name:solo
     8 solo用户名称已被占用,请重试。
     9 Please input your name:ka
    10 ka用户名可以使用,请提交。
    11 当前用户名为:ka
    12 Please input your name:la
    13 la用户名可以使用,请提交。
    14 当前用户名为:la
    15 Please input your name:ji
    16 ji用户名可以使用,请提交。
    17 当前用户名为:ji
    18 每人一年内只能修改3次!
    19 用户名称列表: ['solo', 'james', 'echo', 'joy', 'tump', 'aobama', '新浪新闻', '新浪news', '新浪nba', 'chinanews', 'ka', 'la', 'ji']
  • 相关阅读:
    设计模式-观察者模式
    ps一寸照的编辑
    ps剪切蒙版的使用
    ps扣头发
    mysql索引优化
    ES6 $ ES5
    sping-mybatis集成
    多线程--volatile
    eclipse.exe打开是报错
    Spring Aop 详解二
  • 原文地址:https://www.cnblogs.com/aszeno/p/12936512.html
Copyright © 2011-2022 走看看