Python问题求助:如何解决当前遇到的编程难题?

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

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


Python问题求助:如何解决当前遇到的编程难题?

11 回复

[t for t in list2 if t[0] in list1] 这样? list1 如果太长先转成集合


py3<br>list_1 = ["a","b","c"]<br>list_2 = [("b","b_1","b_2"),("a","a_1")] <br>list_2_all_enum = []<br>list_3 = []<br>for per_tuple in list_2:<br> list_2_all_enum.append(per_tuple[0])<br><br>for per_enum in list_1:<br> try:<br> list_3.append(list_2[list_2_all_enum.index(per_enum)])<br> except:<br> print("None")<br><br>print(list_3)<br>

不是重点 重点是如果没有在 list2 中找到 然后给出提示
目前想到的 只能加一个循环次数 来判断
不知道是否有直接判断 for 循环结束的方法

for else 了解一下

你这个里面的循环跑完怎么会判断不出来,最简单设个 bool 循环跑完 没进 if 就提示呗

要么就像楼上说的 for 外面加个 else,找不到的肯定没有 break 会进 else

…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) <–

不知道怎么贴代码
list3=[]
for x in list1:
for i in range(len(list2)):
if x == list2[i][0]:
list3.append(list2[i])
break
else:
print(“查不到”+x)
我网上找了一下,竟然发现如此神奇的功能

for else 确实神奇 第一次用哈



for fruit in list1:
for t in list2:
if t[0] == fruit:
list3.append(t)
break
else:
print(fruit,‘not found’)

这个编辑器没有格式啊

回到顶部