在循环遍历字符串的for循环中向前看吗?

时间:2019-06-26 02:38:58

标签: python-3.x

我有一个简单的for循环遍历用户输入字符串。如果它遇到某个值,我希望能够向前看下一个值,以确定下一步该做什么。做到这一点的最佳方法是什么?例如,在下面的代码中,如果在字符串中遇到“ 1”,则应查看字符串中的下一个字符。如果它也是1,则打印1。否则不执行任何操作。

UserInput = input("Enter calculator expression:")

for x in UserInput:
    ...
    ...
    if x == 1:
#       if the next value in the string is 1:
#           print 1
#       else:
#       do nothing

7 个答案:

答案 0 :(得分:2)

在循环中使用range和len获取位置地址

UserInput = input("Enter calculator expression")

for i in range(len(UserInput)-1):
    if x[i]=='1':
        if x[i+1]=='1':
            print "something"
        else:
             pass

答案 1 :(得分:2)

您可以自己压缩一个字符串,但是可以用一个切片偏移。

>>> from itertools import zip_longest
>>> the_input = 'foobar'  # example
>>> the_input[1:]  # slice off the first character
'oobar'
>>> for c, lookahead in zip_longest(the_input, the_input[1:]):
...   print(c, lookahead)
...
f o
o o
o b
b a
a r
r None

与使用像C这样的语言那样使用索引相比,这更像Python。 拉链将元素按元素配对,例如拉链的牙齿。

答案 2 :(得分:1)

您可以使用enumerate()函数。 像这样的东西

#!/user/bin/python3
for i,x in enumerate(UserInput):
    if x=='1':
        if UserInput[i+1] == '1':
            print('1')

答案 3 :(得分:1)

首先,python约定为蛇形(改为user_input)

下面的代码是我的解决方法

from itertools import islice

def window(seq, n=2):
    it = iter(seq)
    result = tuple(islice(it, n))
    if len(result) == n:
        yield result
    for elem in it:
        result = result[1:] + (elem,)
        yield result

pair = list(window(user_input))
comparison_list = ["1"]
result = [x for x,y in pair if x in comparison_list and x == y]

答案 4 :(得分:1)

您不需要向前看。至少在解决此类问题时,这不是我们通常要做的。相反,您应该向后看-通过存储信息。以下示例将信息存储在变量state中,您可以决定后续迭代中的下一个动作。

UserInput = input("Enter calculator expression:")

state = '0'
for x in UserInput:
    if x == '1':
        if state == '1':
            print('1')
        else:
            state = '1'
    else:
        state = '0'

答案 5 :(得分:1)

通过zip函数执行此操作的另一种方式(可能是更多的pythonic方式):

for char, next_char in zip(UserInput, UserInput[1:]):
    if char == "1" and char == next_char:
        print(1)

答案 6 :(得分:1)

prev_char = None
for char in input("Enter calculator expression:"):
    pass  # Here you can check the current character and the previous character
    if 1 == prev_char and 1 == char:
        print(1)
    prev_char = char