求助 Python 问题

2019-01-18 16:40:24 +08:00
 u2gign

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

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

1626 次点击
所在节点    Python
11 条回复
yangsi
2019-01-18 16:59:00 +08:00
[t for t in list2 if t[0] in list1] 这样? list1 如果太长先转成集合
SeaRecluse
2019-01-18 17:03:29 +08:00
```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
2019-01-18 17:04:20 +08:00
@yangsi 不是重点 重点是如果没有在 list2 中找到 然后给出提示
目前想到的 只能加一个循环次数 来判断
不知道是否有直接判断 for 循环结束的方法
dashboard
2019-01-18 17:09:37 +08:00
for else 了解一下
rocksolid
2019-01-18 17:11:44 +08:00
@u2gign 你这个里面的循环跑完怎么会判断不出来,最简单设个 bool 循环跑完 没进 if 就提示呗
rocksolid
2019-01-18 17:13:04 +08:00
要么就像楼上说的 for 外面加个 else,找不到的肯定没有 break 会进 else
rabbbit
2019-01-18 17:14:12 +08:00
...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
2019-01-18 17:15:01 +08:00
不知道怎么贴代码
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
2019-01-18 17:16:55 +08:00
@dashboard for else 确实神奇 第一次用哈
yangsi
2019-01-18 17:48:32 +08:00
@u2gign

for fruit in list1:
for t in list2:
if t[0] == fruit:
list3.append(t)
break
else:
print(fruit,'not found')
yangsi
2019-01-18 17:49:04 +08:00
@yangsi 这个编辑器没有格式啊

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/528354

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX