首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python 学习手册
Python Cookbook
Python 基础教程
Python Sites
PyPI - Python Package Index
http://www.simple-is-better.com/
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
V2EX  ›  Python

求助 Python 问题

  •  
  •   u2gign · 31 天前 · 406 次点击
    这是一个创建于 31 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一个 list1 ['苹果','香蕉','梨'] 另一个 list2 是元组[('苹果','属性','10'),('芒果','属性','3','黄色'),...]

    想通过 list1 的元素来查找 list2 中符合的元组,并按照顺序放到一个新的 list3 中,如果没有找到的话 需要提示

          list3=[]
          for x in list1:
               for i in range(len(list2)):
                    if x == list2[i][0]:
                        list3.append(list2[i])
                        break
    

    但是如何来判断 没有找到的话 提示呢

        1
    yangsi   31 天前 via iPhone
    [t for t in list2 if t[0] in list1] 这样? list1 如果太长先转成集合
        2
    SeaRecluse   31 天前
    ```py3
    list_1 = ["a","b","c"]
    list_2 = [("b","b_1","b_2"),("a","a_1")]
    list_2_all_enum = []
    list_3 = []
    for per_tuple in list_2:
    list_2_all_enum.append(per_tuple[0])

    for per_enum in list_1:
    try:
    list_3.append(list_2[list_2_all_enum.index(per_enum)])
    except:
    print("None")

    print(list_3)
    ```
        3
    u2gign   31 天前
    @yangsi 不是重点 重点是如果没有在 list2 中找到 然后给出提示
    目前想到的 只能加一个循环次数 来判断
    不知道是否有直接判断 for 循环结束的方法
        4
    dashboard   31 天前   ♥ 2
    for else 了解一下
        5
    rocksolid   31 天前
    @u2gign 你这个里面的循环跑完怎么会判断不出来,最简单设个 bool 循环跑完 没进 if 就提示呗
        6
    rocksolid   31 天前
    要么就像楼上说的 for 外面加个 else,找不到的肯定没有 break 会进 else
        7
    rabbbit   31 天前
    ...list3=[]
    ......for x in list1:
    .........flag = False <--
    .........for i in range(len(list2)):
    ............ if x == list2[i][0]:
    ..................flag = True <--
    ..................list3.append(list2[i])
    ..................break
    .........if flag == False: <--
    ............print(x) <--
        8
    zyj321321321   31 天前
    不知道怎么贴代码
    list3=[]
    for x in list1:
    for i in range(len(list2)):
    if x == list2[i][0]:
    list3.append(list2[i])
    break
    else:
    print("查不到"+x)
    我网上找了一下,竟然发现如此神奇的功能
        9
    u2gign   31 天前
    @dashboard for else 确实神奇 第一次用哈
        10
    yangsi   31 天前
    @u2gign

    for fruit in list1:
    for t in list2:
    if t[0] == fruit:
    list3.append(t)
    break
    else:
    print(fruit,'not found')
        11
    yangsi   31 天前
    @yangsi 这个编辑器没有格式啊
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2443 人在线   最高记录 4346   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 17ms · UTC 14:21 · PVG 22:21 · LAX 06:21 · JFK 09:21
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1