List Comprehensions中文翻译应该就是一种列表推导的意思,那最终的功能还是生成list,其实就是一种简化代码的方式。
比如我们要create a number list from 0 to 9.
最普通的创建方式:
# 创建一个空集合
num_list=[]
# for循环分别赋值
for i in range(0,10):
num_list.append(i)
num_list
//输出结果
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
但是除了这种方式,我们还可以有多种方式。
# 方法2,将range放入到一个list中不包含10
num_list=list(range(0,10))
num_list
# 方法3,直接循环range为list
num_list=[i for i in range(0,10)]
num_list
num_list=[i for i in range(10)]
num_list
# (0,10)代表从0开始到10,不包含10,默认差值为1,(0,10,2),差值则为2,出来的值也就是偶数
num_list=[i for i in range(0,10,2)]
num_list
create a odd number list from 0 to 9
odd num(奇数)
# 方式1:直接for循环,用取余的方式获取值信息
num_list=[]
for i in range(0,10):
if i % 2==1:
num_list.append(i)
num_list
# 方式2:(1,10,2),差值则为2,出来的值也就是偶数
nun_list=[i for i in range(1,10,2)]
num_list
# 方式3:直接循环range为list
num_list=list(range(1,10,2))
num_list
//输出结果
[1, 3, 5, 7, 9]
better performance
其实最常见的就是对于string的累加操作,在java语法中,我们常用stringBuilder和stringBuffer两个来进行此操作。在python中也是有好多种方法的,但是对于性能,要着重选择最优方式。
container=['huohuo','love','huhu']
string_build=""
for data in container:
# 用相加的方式,是影响性能的,当值少的时候,可以考虑
string_build += str(data)
print(string_build)
builder_list=[]
for data in container:
# 常用方式定义一个list.用join的方式接收
builder_list.append(str(data))
"".join(builder_list)
# another way is to use a "list comprehension"
"".join([str(data) for data in container])
# or use the map function
"".join(map(str,container))
//输出结果
'huohuolovehuhu'