我已使用以下命令将列表中的项目转换为字符串:
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"
两者的结果相同。在这种情况下,使用方括号代替括号(反之亦然)是否重要?
谢谢
答案 0 :(得分:1)
当您编写as_str = [str (y) for y in target_ls]
时,它会创建一个列表并保留在内存中,但是as_str = (str (y) for y in target_ls)
是一个生成器,因此一旦对其进行迭代,它将不会在内存中保留任何内容,它将执行“延迟执行” ',并为您提供理想的结果。
生成器的内存效率很高,但只能使用一次。
答案 1 :(得分:0)
括号将分配一个新列表。如果您有很多元素,这将不必要地分配大量内存;使用括号。
括号创建一个生成器。发电机只能使用一次;如果您需要再次重复使用as_str
,请使用方括号。