代码之家  ›  专栏  ›  技术社区  ›  Agile_Eagle

循环遍历字符串中的第n个元素-python

  •  0
  • Agile_Eagle  · 技术社区  · 7 年前

    如何遍历字符串中的每一个第二元素?

    一种方法是(如果我想遍历第n个元素):

    sample = "This is a string"
    n = 3 # I want to iterate over every third element
    i = 1
    for x in sample:
        if i % n == 0:
            # do something with x
        else:
            # do something else with x
        i += 1
    

    有什么“蟒蛇式”的方法吗?(我很确定我的方法不好)

    3 回复  |  直到 7 年前
        1
  •  5
  •   Jean-François Fabre    7 年前

    如果你想每N步都做些什么,或者其他一些事情,你可以使用 enumerate 要获取索引并使用模数:

    sample = "This is a string"
    n = 3 # I want to iterate over every third element
    for i,x in enumerate(sample):
        if i % n == 0:
            print("do something with x "+x)
        else:
            print("do something else with x "+x)
    

    请注意,不是从1开始,而是从0开始。将偏移添加到 i 如果你还想要什么。

    要只迭代第n个元素,最好的方法是使用 itertools.islice 为了避免创建一个“硬”字符串来迭代它:

    import itertools
    for s in itertools.islice(sample,None,None,n):
        print(s)
    

    结果:

    T
    s
    s
    
    r
    g
    
        2
  •  7
  •   Agile_Eagle    7 年前

    你可以用 step 例如 sample[start:stop:step]

    如果要遍历每一个第二个元素,可以执行以下操作:

    sample = "This is a string"
    
    for x in sample[::2]:
        print(x)
    

    输出

    T
    i
    
    s
    a
    s
    r
    n
    
        3
  •  0
  •   U13-Forward    7 年前

    尝试使用 slice 以下内容:

    sample = "This is a string"
    for i in sample[slice(None,None,2)]:
       print(i)
    

    输出:

    T
    i
    
    s
    a
    s
    r
    n