【问题标题】:Python list and for-loopPython 列表和 for 循环
【发布时间】:2020-12-31 03:01:20
【问题描述】:
a = ["a","b","c","d","e","f"]
for i in range(len(a)):
    print(i)

这段代码的输出是:0 1 2 3 4 5

如何修改我的代码以使输出为:1 2 3 4 5 或仅2 3 4,而不更改a variable 的值?我只想提取迭代的某些部分而不是整体。

【问题讨论】:

  • 为什么是1 2 3 4 5?为什么只有2 3 4
  • for i in range(1,6)for i in range(2,5)。列表的内容与循环的行为无关;你读到的只是长度。
  • 嗨,在 for 循环中,您没有访问数组中的任何数据,您想只打印 2、3、4 还是要访问或打印数组索引中的数据?
  • range(1,len(a)) 1 2 3 4 5 range(2,4) 2 3 4
  • 请尝试阅读并运行下面的最新帖子?

标签: python python-3.x list for-loop


【解决方案1】:

我只想在我的代码中提取1 2 3 4 52 3 4,而不更改上述数组。所以我做的是这样的:

a = ["a","b","c","d","e","f"]
for i in range(len(a)):
    if i == 0:
        continue
    print(i)

输出:1 2 3 4 5 没有 0

如果我只想提取 2 3 4 我所做的是:

a = ["a","b","c","d","e","f"]
for i in range(len(a)):
    if i < 2:
        continue
    elif i == 5:
        continue
    print(i)

输出:2 3 4

【讨论】:

  • ...看到这个我什至更加对你想要完成的事情感到困惑。
  • 我也不知道我将在哪里使用它。这只是我在尝试学习这个循环时遇到的一个想法(或问题)。
  • 如果您不关心 0,则没有理由通过 len(a) - 1 遍历数字 0。只需使用 range(1, len(a))
【解决方案2】:

正如您所说,您是新手,那么让我们先了解发生了什么,然后我们可以根据我们的要求对其进行修改。 for i in range(len(a)): range() 函数用于生成数字序列。这里,从 (0 到 len(a)-1) 和这里 len(a)=6 所以你的 for 循环从 0 迭代到 5。 现在如果我们想修改我们的输出说我们想要 2,3,4 那么我们可以提供一个“if”语句来选择任何特定的子集,即

for i in range(len(a)):
    if(i>1) & (i<5):
        print(i)

或者,如果您愿意,您可以尝试切片: 输出为 2,3,4

print(a[2:5])

记住一个[开始:结束+1]

【讨论】:

    【解决方案3】:

    您可以尝试使用切片:

    从左到右的索引从 0 到 len(a)-1
    从右到左是-1到-len(a)

    语法是:

    a[start_index:end_index]
    

    上面可以给你元素作为输出然后你可以应用列表的索引函数来获取索引值。

    注意:如果您想提取列表的完整部分,此方法将有效。它不会在整个列表上进行迭代,而只会在您要提取的部分上进行迭代。

    虽然给切片记住end_index不包括在内。

    用于提取 1,2,3,4,5:

    for i in a[1:]:
        print(a.index(i))
    
    #or 
    
    

    提取 2,3,4:

    for i in a[2:5]:
        print(a.index(i))
    

    【讨论】:

    • 这是正确的吗? &gt;&gt;&gt; a[2:5] ['c', 'd', 'e'] (应该是第 3、4、5 项)
    • 感谢指正,我之前误解了输出。
    猜你喜欢
    • 2018-12-27
    • 1970-01-01
    • 1970-01-01
    • 2016-09-04
    • 2021-05-03
    • 2019-05-09
    • 2020-10-22
    • 2014-02-22
    • 2023-03-11
    相关资源
    最近更新 更多