将列表项转换为字符串,是否对语法有疑问?

时间:2018-10-24 10:17:56

标签: python

我已使用以下命令将列表中的项目转换为字符串:

            new Divider(),
            new ListTile(
              leading: Icon(Icons.bubble_chart),
              title: new Text('About the App'),
              onTap: () {
                Navigator.push(
                  context,
                  MaterialPageRoute(builder: (context) => AboutTheApp()),
                );
              },
            ), 

但是我注意到我也可以使用:

target_ls = [w, x, y, z]

    as_str = (str (y) for y in target_ls)

    final_str = "\t".join(as_str) + "\n"

两者的结果相同。在这种情况下,使用方括号代替括号(反之亦然)是否重要?

谢谢

2 个答案:

答案 0 :(得分:1)

当您编写as_str = [str (y) for y in target_ls]时,它会创建一个列表并保留在内存中,但是as_str = (str (y) for y in target_ls)是一个生成器,因此一旦对其进行迭代,它将不会在内存中保留任何内容,它将执行“延迟执行” ',并为您提供理想的结果。

生成器的内存效率很高,但只能使用一次。

答案 1 :(得分:0)

括号将分配一个新列表。如果您有很多元素,这将不必要地分配大量内存;使用括号。

括号创建一个生成器。发电机只能使用一次;如果您需要再次重复使用as_str,请使用方括号。