循环遍历python中的列表

时间:2013-04-28 22:44:46

标签: python list loops

几周前我开始学习python,到目前为止还没有编程背景。 我想知道是否有人可以用简单的语言解释我,“循环列表”有什么作用? 这是一个例子:

list = [4, 'b', 'e',21,5]
for n in list:
    print n

运行脚本后,我得到的是:逐项打印列表: 4 b Ë 21 5

但我不明白它背后的逻辑。 有人会善意向我解释一下吗?

谢谢,抱歉无知。

5 个答案:

答案 0 :(得分:3)

我认为你的例子可以让你尽可能清楚地表达它。

mylist = [4, 'b', 'e', 21, 5]

通过使用[语法,这将创建一个新的list,并按照给定的顺序对其进行初始化。然后将列表分配给变量{{1 }}。 (请注意,我更改了名称,因为mylistlist数据类型的默认名称。

list

这是for loop,它迭代列表中的所有项目。 Python努力像英语一样阅读。所以它说,

  

对于列表for n in mylist: 中的每个项目,请调用项mylist并执行以下操作:

然后,对每个项目执行在n下缩进的所有内容。

for

当然,这会将print n 打印到屏幕上。


总而言之,您的代码说:

  

1)创建一个包含以下项目的列表:4,'b','e',21,5

     

2)对于该列表中的每个项目,将其称为n,然后将n打印到屏幕上。

答案 1 :(得分:2)

由于您似乎没有接触过其他编程语言,因此您无法真正看到,为什么这对于表达列表元素的迭代来说真的是一个有用的符号。

为了对比它,这是另一个更低级语言的例子:

int foo[] = { 0, 1, 2, 3, 4, 5, 6 };
int i;
for(i = 0; i < sizeof(foo) / sizeof(int); i++)
{
   printf("%d", foo[i]);
}

基本上,Python列表就像添加了很多语法便利的数组一样。也就是说,您可以以更紧凑的形式表达您经常需要的东西,例如迭代:

somelist = [0, 1, 2, 3, 4, 5, 6]
for element in somelist:
    print(element)

编辑:有时查看源代码会有所帮助,在本例中是Python源代码分发的文件Objects/listobject.c(例如3.3)。在那里你会发现所有python list方法的实现,其中有listiter_next,它处理遍历。除了一些东西,代码看起来像这样:

static PyObject *
listiter_next(listiterobject *it)
{
    PyListObject *seq;
    PyObject *item;

    seq = it->it_seq;
    if (seq == NULL)
        return NULL;

    if (it->it_index < PyList_GET_SIZE(seq)) {
        item = PyList_GET_ITEM(seq, it->it_index);
        ++it->it_index;
        return item;
    }

    it->it_seq = NULL;
    return NULL;
}

你可以说这是列表上的循环

答案 2 :(得分:1)

想想

for x in list:
    print x

作为句子

  

对于列表中的每个项目x,打印(显示)它是什么。

在另一个案例中

for x in list:
    print x+1

您可以将其视为

  

对于列表中的每个项目x,打印项目+ 1的结果。

就短语“循环列表”而言,将“循环”视为“从外部检查”。隐喻:你在飞机上,飞过一组建筑物:

buildings = ['Empire State', 'Chrysler', 'Masonic Lodge']

for building in buildings:
   print "Just flew over the %s building." % building

你在一个项目数组中重复一个任务(在一个循环中)“over”或“for each”,在隐喻的情况下,这是一系列建筑物。

答案 3 :(得分:0)

这个“循环列表”只是遍历列表中的每个元素(在您的示例中,这些元素是4be21,{ {1}})以便您可以单独对它们执行某些操作(例如5或在示例中显示其值)。

换句话说,当你执行这段代码时:

print

向一个人指示以下内容是相同的:

for element in list:
    print element

当然,除了“显示”每个元素的值之外,您还可以执行其他操作。您可以遍历该列表并以(几乎)您喜欢的方式修改值。

答案 4 :(得分:0)

您有一个包含一定数量元素的列表。现在,您希望对该列表中的每个元素执行某些操作,例如,将其打印到控制台。通过使用for n in list,您可以逐个考虑list中的元素,并且当前考虑的元素称为n。首先,n指向list中的第一个元素,然后指向第二个元素,然后指向第三个元素,依此类推。在该行下方的缩进块中,您将描述每个元素n的内容。在这种情况下,唯一的指令是print它。