用len()测量列表的长度会得到错误的结果

2024-10-01 04:51:57 发布

您现在位置:Python中文网/ 问答频道 /正文

救命啊!我不明白。在Python2.7中,当我试图用len()测量列表的长度时,得到的结果是错误的。在

代码如下:

    if len(fields) > 0:
        fields_split = []

        for i in fields:
            i = i.split(',')
            fields_split.append(i)

        reindz = len(fields_split)
        print fields
        print reindz

        print fields_split

输出如下:

^{pr2}$

因此,即使split调用有效,包含一个和两个元素的列表之间的长度没有差别。。。在


Tags: 代码in元素fields列表forlenif
3条回答

我想你想要这个。。在

fields=u'name,description'
if len(fields) > 0:
    fields_split = fields.split(',')
    reindz = len(fields_split)
    print fields
    print reindz
    print fields_split

结果:

^{pr2}$

对于每个拆分字符串,您将将结果列表附加到fields_split。因此fields_split将始终具有与fields完全相同的元素数,每个元素都是一个单独的列表对象。这些单独的列表对象每个都有一个或多个字符串。在

如果要将所有拆分字符串添加到fields_split,而不需要中间列表,请使用list.extend()而不是{}:

fields_split.extend(i)

现在,每个分割结果都作为一个单独的条目直接添加到fields_split中,长度将等于或大于fields的长度。在

根据你的输出

[u'name,description']
1
[[u'name', u'description']]
[u'name,description']
1
...

len()函数返回正确的输出。对于上面的第二个示例,[[u'name', u'description']]的长度为1,因为它是一个2D列表。第一个“维度”是一个列表。在那个维度上只有一个。所以长度是1。第二个“维度”(内部列表)的长度是2,因为它有两个项。在

相关问题 更多 >