作者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://www.ptt.cc/bbs/Python/M.1560305338.A.48A.html
→ a172545056: 真的非常感謝前輩指點!!! 06/12 10:29
→ 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
推 idletime: 大大,請問一下,因為我還在初學者,所以都分行(或者 06/26 01:49
→ idletime: 說比較一步一步),對於一行解,有時看懂有時看不懂。 06/26 01:49
→ idletime: 我想請問在程式上處理速度是否比較快?一行解是要看什 06/26 01:49
→ idletime: 麼資料(或關鍵字)? 06/26 01:49