puython基础实战(六)-List Comprehensions

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'
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章