【问题标题】:Creating for loop until list.length创建 for 循环直到 list.length
【发布时间】:2013-01-10 01:41:10
【问题描述】:

我现在正在阅读 for 循环,我很好奇是否可以像在 Java 中一样在 Python 中执行 for 循环。

是否有可能做类似的事情

for (int i = 1; i < list.length; i++)

你能在这个for循环中再做一个for循环吗?

谢谢

【问题讨论】:

  • 在 Java 中,该循环将跳过列表的第一个元素。这真的是你想要的吗?如果是这样,请在下面的所有答案中使用my_list[1:] 而不是my_list。如果那是一个错误……好吧,这正是 Python 不使用 C/Java 方式循环 for 的原因,因为它使这样的错误变得不可能。

标签: python list for-loop


【解决方案1】:

您可以在此处了解 Python 循环: http://en.wikibooks.org/wiki/Python_Programming/Loops

您必须知道 Python 没有 { 和 } 用于循环的开始和结束,而是取决于您在第一行输入的制表符,我的意思是行缩进。

所以你可以用双制表符(缩进)做循环内循环

双循环的一个例子是这样的:

onetoten = range(1,11)
tentotwenty = range(10,21)
for count in onetoten:
    for count2 in tentotwenty
        print(count2)

【讨论】:

    【解决方案2】:

    是的,你可以,range [docs]

    for i in range(1, len(l)):
        # i is an integer, you can access the list element with l[i]
    

    但如果您仍然要访问列表元素,直接迭代它们会更自然:

    for element in l:
       # element refers to the element in the list, i.e. it is the same as l[i]
    

    如果要跳过第一个元素,可以slice the list [tutorial]

    for element in l[1:]:
        # ...
    

    你能在这个for循环中再做一个for循环吗

    当然可以。

    【讨论】:

    • 太好了,感谢您的帮助,我正在寻找类似的东西,但找不到任何东西......不得不问
    【解决方案3】:

    在 Python 中,您可以遍历 list 本身:

    for item in my_list:
       #do something with item
    

    或者要使用索引,您可以使用xrange():

    for i in xrange(1,len(my_list)):    #as indexes start at zero so you 
                                        #may have to use xrange(len(my_list))
        #do something here my_list[i]
    

    还有一个名为 enumerate() 的内置函数,它同时返回项目和索引:

    for index,item in enumerate(my_list):
        # do something here
    

    例子:

    In [117]: my_lis=list('foobar')
    
    In [118]: my_lis
    Out[118]: ['f', 'o', 'o', 'b', 'a', 'r']
    
    In [119]: for item in my_lis:
        print item
       .....:     
    f
    o
    o
    b
    a
    r
    
    In [120]: for i in xrange(len(my_lis)):
        print my_lis[i]
       .....:     
    f
    o
    o
    b
    a
    r
    
    In [122]: for index,item in enumerate(my_lis):
        print index,'-->',item
       .....:     
    0 --> f
    1 --> o
    2 --> o
    3 --> b
    4 --> a
    5 --> r
    

    【讨论】:

    • xrange() 在 Python 3 中不再可用。相反,现在可以使用 range() 完成相同的操作,但与以前略有不同。 for i in range(0,len(my_list)):
    • @vito 无需将 0 传递给range()range(len(my_list)) 有效。
    • 注意:xrange 在 python 3 中被重命名为 range
    【解决方案4】:

    答案取决于你需要一个循环来做什么。

    当然你可以有一个类似于 Java 的循环:

    for i in xrange(len(my_list)):
    

    但我从未真正使用过这样的循环,

    因为通常你想要迭代

    for obj in my_list
    

    或者如果你也需要索引

    for index, obj in enumerate(my_list)
    

    或者您想从列表中生成另一个集合

    map(some_func, my_list)
    
    [somefunc[x] for x in my_list]
    

    还有itertools 模块涵盖了大部分与迭代相关的案例

    还请查看 anymaxminallenumerate 等内置函数

    我会说 - 不要尝试在 python 中编写类似 Java 的代码。总有一种 Pythonic 的方式来做到这一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多