将列表中的元素与嵌套循环进行比较

时间:2015-11-08 13:03:48

标签: python list loops nested

我正在寻找一个变体来确定字符串列表中的字符(" b")是否使用嵌套循环跟随某个字符(" a")。然后,程序应计算上述条件的字符串总数。

我已经编写了以下代码,可以使用.find

nStrings = int ( input ( "input n amount of strings: " ))

listStr = [ ]

sumStr = 0

for i in range (0, len(nStrings)):

    newStr = input ("enter string: ")

    listn.append(newStr)

for i in range (0, len(listStr)):

    if listn[i].find("a") < listn[i].find("b"):

        sumStr = sumStr + 1

print("sumStr")

但是,我正在寻找一种使用嵌套循环的方法。

目前我的方法是

for i in range (0, len(listStr)):

    if listStr[i] == "a":

        foundA = i

        for j in range (i+1, len(listStr)):

              if list[j] == "b":

                   foundB = j

              if foundA < foundB:

                  afterA = True
然而,这对我来说根本不起作用。如果尝试了一些变体,但我确定我犯了一个逻辑错误。

3 个答案:

答案 0 :(得分:0)

我不会使用嵌套的for循环进行此比较,而是可以使用str.find()方法(正如@ cricket_007指出的那样,是一个隐含的循环):

def getinput():
  nStrings = int(input("inuput n amount of strings:"))
  l = []
  for i in range(nStrings):
    l.append(input('enter string\n'))
  return l
def compare(itm): 
  if 'a' in itm and 'b' in itm:
    return True if itm.find('a') < itm.find('b') else False
  else:
    return None

listStr = getinput() 
print zip(listStr, map(compare, listStr))

给定输入:['David', 'alphabet', 'bagpipes'],这应该返回列表中的元组:

[('David', None), ('alphabet', True), ('bagpipes', False)]

答案 1 :(得分:0)

您可以使用一个循环

letter1 = "a" 
letter2 = "b" 
for i in range (0, len(listStr)):
    if listStr[i] == letter1:
        pos1 = i
    if listStr[i] == letter2:
        pos2 = i

foundAfter = (pos2 > pos1) # an error is here if the letters weren't found at all 

答案 2 :(得分:0)

这是一个函数的实现,用于检查字符串中statement calc(code) 之后是否发生b

a

要避免使用def a_before_b(haystack): found_a = False for letter in haystack: if letter == 'a': found_a = True elif letter == 'b' and found_a: # we found 'b' and already have found 'a' earlier return True return False ,请使用此方法代替行

.find()
代码中的

,如下所示:

    if listn[i].find("a") < listn[i].find("b"):