如何使用for循环查找字符串中子字符串的所有实例

时间:2019-03-26 20:23:49

标签: python list loops

对于学校项目,我必须找到字符串中列表元素的所有实例的位置。我对Python缺乏经验,可能在了解if语句,循环,变量和列表的知识有限的情况下根本不了解如何做到这一点。

到目前为止,我唯一尝试过的方法是使用for循环。我创建了计数器变量“ i”,对于字符串中的每个list [i],我都需要它的位置。在开始寻找职位之前,我需要确定字符串中的列表元素。

list1=['a','b','c']
str1='aabfh'
i=0
while "some condition":
    for list1[i] in str1:
        print(list1[i])
    i=i+1

我希望输出如下:

a
a
b

但是得到了:

a
a
b
f
h

我哪里出错了?

3 个答案:

答案 0 :(得分:1)

您使用的for循环错误。

这将获取字符串中的每个字符,将其分配给x,然后进行打印:

for x in 'aabfh':
    print (x)

这将获取字符串中的每个字符,将其分配给list1 [i]并进行打印:

for list1[i] in 'aabfh':
    print(list1[i])

在您的代码中,如果查看list1,您会发现它已更改为['h','h','h'],因为这就是您要它执行的操作(或至少与h一样多)因为“某些条件”允许)。

答案 1 :(得分:0)

您的循环加注NameError。您无法像这样在for循环中访问列表的元素。将其更改为该值以打印所需的输出:

for char in str1:
    if char in list1:
        print(char)

a
a
b

要打印其位置,可以使用index

for char in str1:
    if char in list1:
        print(list1.index(char))

0
0
1

答案 2 :(得分:0)

您的代码有很多问题。

正如@Kenny Ostrom在回答中指出的那样,您的for格式是错误的。

for循环的格式为:

for new_variable_name in list:
    print(new_variable_name)

new_variable_name被分配给该列表中的每个项目

for循环遍历列表中的每个项目一次。就您而言

for char in str1
    print(char)

将打印

a
a
b
f
h

您遇到的另一个问题是不必要的while循环。您将for循环包围在while循环中,该循环将继续运行而不停止。如果您没有for循环,那么这可能对您有用,但是因为您已经在使用for循环,所以这是不必要的。

如果要使用for循环,则程序的结构应如下所示:

list1=['a','b','c']
str1='aabfh'
i=0
for character in str1:
   '''
   Some code here that figures out **if** the character is in list1 and then prints that character. 
   '''

您应该可以从这里弄清楚这一点。