作者TuCH (谬客)
看板Python
标题Re: [问题] Python新手 for回圈问题
时间Wed Jun 12 10:08:56 2019
※ 引述《a172545056 (Leon)》之铭言:
: 各位前辈大家好,我是刚接触python不久的新人,目前练习到for回圈时有点卡关,想请
: 教一下各位前辈
: 我有三个List
: ListA=[“Apple”,“food”,“Iron”]
: ListB=[“x”,“z”,“on”]
: ListC=[]
: 今天我想知道ListA中的字串是否有包含ListB的字串,有的话ListC.append(“YES”),没
: 有的话ListC.append(“No”),
: 我想得到的结果是ListC[“No”,“No”,“Yes”]
: 小弟目前的做法是
稍微修改一下
if len(ListA) != len(ListB):
assert 'ListA 长度跟 ListB 长度不一致'
for a_index, a_str in enumerate(ListA):
b_str = ListB[a_index]
if b_str in a_str:
ListC.append("Yes")
else:
ListC.append("No")
: 这样子ListC就增加了很多“No”,
: 跟我想要的结果不太一样,
: 想了很久不知道该怎麽做
: 还请各位前辈指点一下,谢谢!
酷炫一点的一行解决
ListD = ['Yes' if ListB[a_index] in a_str else 'No' for a_index,a_str in enumerate(ListA)]
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.38.2.203 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1560305338.A.48A.html
1F:→ a172545056: 真的非常感谢前辈指点!!! 06/12 10:29
2F:→ TuCH: 突然发现我的方法跟你想要的可能不太一样 XDDD 06/12 15:15
我发现我误会你的意思了 正确的code应该是
for a_str in ListA:
for b_str in ListB:
if b_str in a_str:
ListC.append("Yes")
break
else:
ListC.append("No")
※ 编辑: TuCH (114.38.2.203 台湾), 06/12/2019 15:36:31
3F:推 idletime: 大大,请问一下,因为我还在初学者,所以都分行(或者 06/26 01:49
4F:→ idletime: 说比较一步一步),对於一行解,有时看懂有时看不懂。 06/26 01:49
5F:→ idletime: 我想请问在程式上处理速度是否比较快?一行解是要看什 06/26 01:49
6F:→ idletime: 麽资料(或关键字)? 06/26 01:49