常用字母、列表、PYTHON
我想消除string1(常用字母、列表、PYTHON,python,list,Python,List,我想消除string1(str1)和string2(str2)中的常见字母,比如,假设string1包含一个“a”,string2包含两个“a”,那么如果元素匹配,那么string2中只有一个“a”必须消除,而不是两个“a”,因为string1中只有一个“a”。我尝试了第一个代码,但没有成功。所以我稍微修改了它,并尝试了我的第二个代码,但没有成功。我是初学者,英语不好,请用你的密码回答我。谢谢提前 第一个代码: str1="racecup" str2="alarm&
str1
)和string2(str2
)中的常见字母,比如,假设string1包含一个“a”,string2包含两个“a”,那么如果元素匹配,那么string2中只有一个“a”必须消除,而不是两个“a”,因为string1中只有一个“a”。我尝试了第一个代码,但没有成功。所以我稍微修改了它,并尝试了我的第二个代码,但没有成功。我是初学者,英语不好,请用你的密码回答我。谢谢提前
第一个代码:
str1="racecup"
str2="alarm"
temp1=str1;temp2=str2
str1=list(str1)
str2=list(str2)
while True:
flag=0
for i in str1:
for j in str2:
if i==j:
flag+=1
str1_ele_index=str1.index(i)
str2_ele_index=str2.index(j)
str1.remove(str1[str1_ele_index])
str2.remove(str2[str2_ele_index])
if flag==0:
break
print(temp1,"and",temp2,"have no letters in common")
print(temp1,":",str1,temp2,":",str2)
第二个代码:
str1="racecup"
str2="alarm"
temp1=str1;temp2=str2
str1=list(str1)
str2=list(str2)
while True:
flag=0
for i in range(len(str1)):
for j in range(len(str2)):
if str1[i]==str2[j]:
flag+=1
str1.remove(str1[i])
str2.remove(str2[j])
if flag==0:
break
print(temp1,"and",temp2,"have no letters in common")
print(temp1,":",str1,temp2,":",str2)
所需输出:
racecup and alarm have no letters in common
racecup:["c","e","c","u","p"] alarm:["l","a","m"]
使用inter()
函数查找常用字符,使用string类中的replace
函数,可以替换这些字符
def inter(lst1, lst2):
lst3 = [value for value in lst1 if value in lst2]
return lst3
str1="racecup"
str2="alarm"
s1 = list(str1)
s2 = list(str2)
common = inter(s1,s2)
for i in common :
str1 = str1.replace(i,'',1)
str2 = str2.replace(i,'',1)
这行吗?在python中有更好的方法来实现这一点
str1="racecup"
str2="alarm"
common = set(str1).intersection(set(str2))
print(common)
str1 = ''.join([i for i in str1 if i not in common])
str2 = ''.join([i for i in str2 if i not in common])
print("str1 - " + str1)
print("str2 - " + str2)
输出:
{'a', 'r'}
'cecup'
'lm'
然后,您可以简单地将列表加入一个字符串。使用“”。join给定字符串的预期输出是什么?@Sushanth删除两个字符串中的常用字母后,racecup变为“cecup”,alarm变为“lam”。为什么
alarm
没有变为lm
?这是否回答了您的问题@AleksanderIkleiw,我想有人搞乱了你的两个账户,别担心,Stackoverflow会自动撤销连续投票。
#!/usr/bin/python3
def remove_common_letters(string1, string2):
cleaned_string1 = [letter for letter in string1 if letter not in string2]
cleaned_string2 = [letter for letter in string2 if letter not in string1]
print("STRING1: {0} - Without common letters: {1}".format(string1, cleaned_string1))
print("STRING2: {0} - Without common letters: {1}".format(string2, cleaned_string2))
if __name__ == '__main__':
remove_common_letters('racecup', 'alarm')
STRING1: racecup - Without common letters: ['c', 'e', 'c', 'u', 'p']
STRING2: alarm - Without common letters: ['l', 'm']