使用数组在字符串中查找子字符串?

Finding a substring within a string using an array?

我试图了解编程,但我无法弄清楚为什么这不起作用?我是否错误地使用了 "not" 和 "in"?

我试图让程序只打印出现在两个字符串中的字符。它正确地识别了它们,但如果出现不止一次,我无法让它只打印一组字符。

a = input("string1 :")
b = input("string2: ")
list1 = []

for i in a:
    for j in b:
        if i == j and i not in list1:
            list1.append([i])
            break

print(list1)

例如,如果您打印字符串 "alexander" 和 "alex",它将打印字符 a、l、e、x、a、e

我知道当前方法只有在输入 string1 作为主字符串时才有效,但我只是想知道为什么这不起作用。

问题是您没有将常用字母添加到 list1,而是添加了一个仅包含常用字母的新列表到 list1。最后你有一个列表列表。同时,您正在检查列表列表中是否有单个字母,这将始终为 false。

您应该使用 append:

将常用字母 "i" 添加到列表中
a = input("string1 :")
b = input("string2: ")
list1 = []

for i in a:
    for j in b:
        if i == j and i not in list1:
            list1.append(i)
            break

print(list1)

您也可以将字符串 a 和 b 转换为集合并相交:

print set(a) & set(b)