推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
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
u2gign
V2EX  ›  Python

求助 Python 问题

  •  
  •   u2gign · Jan 18, 2019 · 2608 views
    This topic created in 2678 days ago, the information mentioned may be changed or developed.

    一个 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
    

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

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

    for fruit in list1:
    for t in list2:
    if t[0] == fruit:
    list3.append(t)
    break
    else:
    print(fruit,'not found')
    yangsi
        11
    yangsi  
       Jan 18, 2019
    @yangsi 这个编辑器没有格式啊
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1106 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 18:39 · PVG 02:39 · LAX 11:39 · JFK 14:39
    ♥ Do have faith in what you're doing.