我知道有關於這個主題的許多正確的解決方案,但我想補充解決這一問題的一些有趣的方式。 如果您來自C++/C#或Java,您將傾向於使用類似比較的操作,然後使用索引執行操作以刪除for循環中的不需要的條目。 Python具有刪除和刪除功能。刪除功能使用數值和 刪除使用索引。pythonic解決方案在最後的功能。讓我們看看我們如何能做到這一點:
這裏我們使用for循環的索引和刪除功能在C++非常相似:
def remove_vol(str1):
#list2 = list1 # this won't work bc list1 is the same as list2 meaning same container#
list1 = list(str1)
list2 = list(str1)
for i in range(len(list1)):
if list1[i] in volwes:
vol = list1[i]
x = list2.index(vol)
del list2[x]
print(list2)
使用刪除功能:
def remove_vol(str1):
list1 = list(str1)
list2 = list(str1)
for i in list1:
if i in volwes:
list2.remove(i)
print(list2)
使用索引構建不包含不需要的字符的新字符串:
def remove_vol(str1):
list1 = list(str1)
clean_str = ''
for i in range(len(list1)):
if list1[i] not in volwes:
clean_str += ''.join(list1[i])
print(clean_str)
一樣在上面的解決方案,但使用值:
def remove_vol(str1):
list1 = list(str1)
clean_str = ''
for i in list1:
if i not in volwes:
clean_str += ''.join(i)
print(clean_str)
你應該怎麼做在Python?使用列表理解!它是美麗的:
def remove_vol(list1):
clean_str = ''.join([x for x in list1 if x.lower() not in volwes])
print(clean_str)
它不應該是'[如果L不是元音l對於升的C]'? – IanAuld
@lanAuld謝謝更正。 –
您可以忽略[]並使用隱式生成器而不是此中間列表。 –