我有兩個串列,比方說:
l1 = ['c', 'o', 'k', 'e']
l2 = ['a', 'b', 'c', 'd']
我想創建一個回圈,它將檢查 l1 中的每個字母是否在 l2 中(如果是這種情況,我會得到“”)或者它是否存在并且在相同的位置(在這種情況下,我會得到“Y”) .
我從這段代碼開始(不幸的是我失敗了)。你能告訴我缺少什么嗎?
for i in l1:
for j in range(0,4):
if l1[j] == l2[j]:
v = "Y"
elif i in l2:
v = "."
else:
v = "N"
text = "".join(v)
示例中的那些串列,我假設得到:
text = .NNN
我知道這可能是一個簡單的問題,但我是初學者,這讓我發瘋:)
uj5u.com熱心網友回復:
查看您的代碼,您可以使用zip()它同時迭代兩個串列。也在str.join回圈之后使用:
l1 = ["c", "o", "k", "e"]
l2 = ["a", "b", "c", "d"]
out = []
for a, b in zip(l1, l2):
if a == b:
out.append("Y")
elif a in l2:
out.append(".")
else:
out.append("N")
print("".join(out))
印刷:
.NNN
uj5u.com熱心網友回復:
l1 = ['c', 'o', 'k', 'e']
l2 = ['a', 'b', 'c', 'd']
text = ""
for i in l1:
if i in l2:
v = "."
else:
v = "N"
text = v
print(text)
首先我們定義text=""以便我們可以追加。然后我們回圈所有的字母l1。然后我們檢查該字母是否在l2. 如果是我們添加'.',text如果不是我們添加N。最后我們列印text
uj5u.com熱心網友回復:
您可以執行以下操作:
ans = ""
for i, val in enumerate(l1):
if l2[i] == val:
ans = "Y"
elif val in l2:
ans = "."
else
ans = "N"
uj5u.com熱心網友回復:
您不必使用您正在執行的操作回圈遍歷第二個陣列。您可以像這樣簡化代碼。
l1 = ['c', 'o', 'k', 'e']
l2 = ['a', 'b', 'c', 'd']
text = ""
for i in range(len(l1)):
if l1[i] == l2[i]:
text = "Y"
elif l1[i] in l2:
text = "."
else:
text = "N"
print(text)
不需要回圈兩次,因此不是解決問題的最有效方法。
uj5u.com熱心網友回復:
使用 python 集。
簡單的 ./N 檢查
l1 = ['c', 'o', 'k', 'e']
l2 = ['a', 'b', 'c', 'd']
S = set(l2)
out = ''.join('.' if x in S else 'N' for x in l1)
輸出:.NNN
更復雜的 ./Y/N 檢查:
l1 = ['c', 'o', 'k', 'e', 'z']
l2 = ['a', 'b', 'c', 'd', 'z']
S = set(l2)
out = ''.join(('Y' if l2[i]==x else '.') if x in S else 'N'
for i, x in enumerate(l1))
輸出:.NNNY
uj5u.com熱心網友回復:
l1 = ['c', 'o', 'k', 'e']
l2 = ['a', 'b', 'c', 'd']
text = ""
for char in l1:
if char in l2:
index = l1.index(char)
if char == l2[index]:
v = "Y"
else:
v = "."
else:
v = "N"
text = v
print(text)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/481199.html
上一篇:無法洗掉字串串列的特定值
下一篇:如何替換串列中字串中的字符?
