Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
常用字母、列表、PYTHON_Python_List - Fatal编程技术网

常用字母、列表、PYTHON

常用字母、列表、PYTHON,python,list,Python,List,我想消除string1(str1)和string2(str2)中的常见字母,比如,假设string1包含一个“a”,string2包含两个“a”,那么如果元素匹配,那么string2中只有一个“a”必须消除,而不是两个“a”,因为string1中只有一个“a”。我尝试了第一个代码,但没有成功。所以我稍微修改了它,并尝试了我的第二个代码,但没有成功。我是初学者,英语不好,请用你的密码回答我。谢谢提前 第一个代码: str1="racecup" str2="alarm&

我想消除string1(
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']