python中的zip()函数详解,python中zip方法
在这篇文章中,作者介绍了五种方法。可能刚开始阶段我们对它们不太了解,但是这五种技术在实战中非常实用。
字符串运算
字符串本质上是一个元组,但是有很多方法可以“计算”字符串。最直观的就是字符串的and *运算,分别代表重复和串联。
my_string=嗨中号.
打印(my_string * 2)
Hi中等.Hi中等.
print(my_string 我爱Python * 2)
Hi中等.我爱Python我爱Python另外,如果想得到反向字符串,也可以直接使用[:3360-1]进行索引:
print(我的字符串[:-1])
!muideM iH my_list=[1,2,3,4,5]
打印(我的列表[:-1])
[5,4,3,2,1]如果列表元素都是字符串,那么我们可以快速使用join()方法将所有元素拼接在一起:
word_list=[牛逼,是,这个]
打印()。join(word_list[:-1])!)
这太棒了。如上所述,我们使用。join()方法来拼接列表元素,其中“”表示连接方式是空格。实际上,这种方法在自然语言处理中经常使用。例如,如果我们将一个句子拆分成字符,那么我们需要在处理后使用join()进行合并。
相关:《Python基础教程》
列表推导式
如果你还不会用列表求导,那就赶紧学吧。正如这篇文章的作者所说,“当我第一次学习这种方法时,我的整个世界都变了。列表推导真的很强大。它不仅比一般的方法更快,而且直观易读。如果想迭代链表做一些操作,那就赶紧用吧。
让我们首先定义一个简单的函数,它将变量平方并加上5:
def愚蠢_func(x):
X * * 2 5如果我们想把这个函数应用于列表中的奇数项,那么在不使用列表派生的情况下,我们一般会把它写成如下形式:
我的列表=[1,2,3,4,5]
new_list=[]
对于我的列表中的list:
如果x % 2!=0:
new_list.append(愚蠢_func(x))
打印(新列表)
[6,14,30]但是现在我们有了列表派生,上面的代码可以等效地修改为:
我的列表=[1,2,3,4,5]
print([study _ func(x)for x in my _ list if x % 2!=0])
[6,14,30]列表派生的一般语法可以表示为[列表中项目的表达式]。如果您希望添加一些布尔条件语句,可以将上面的语法修改为[如果有条件,则为列表中的项目表达式],其结构实际上等效于下面的。
对于列表:中的项目
如果条件:
上述表达式的列表推导可以进一步简化,即不需要定义新的函数。
print([x ** 2 5 for x in my_list if x % 2!=0])
[6, 14, 30]
Lambda 和 Map
Lambda 是一种匿名函数,它看起来可能有一点奇怪,但是一旦你理解了它,那么他就会变得非常直观与强大。
一般而言,Lambda 函数都比较小,它也不需要定义函数名。那么为什么需要匿名函数?简单而言,Lambda 最常执行一些直观的运算,它并不需要标准的函数定义,而且也不需要新的函数名再次调用。
还是拿上面的先平方再加 5 为例,前面我们是定义了一个标准的函数,def stupid_func(x),现在我们可以试试 Lambda 匿名函数:
>>> stupid_func = (lambda x : x ** 2 + 5)那么我们为什么要用上面的表达式?很大一部分原因在于,当我们想执行一些简单运算时,可以不需要定义真实函数就能完成。例如排序列表元素,一种直观的方法可以使用 sorted() 方法:>>> print([stupid_func(1), stupid_func(3), stupid_func(5)])
[6, 14, 30]
>>> my_list = [2, 1, 0, -1, -2]这只能默认从大到小或从小到大排序,但是借助 Lambda 表达式,我们可以实现更自由的排序标准。如下所示我们希望根据最小的平方数对列表进行排序,其可以使用 Lambda 函数定义键,从而告诉 sorted() 方法该怎样排序。>>> print(sorted(my_list))
[-2, -1, 0, 1, 2]
>>> print(sorted(my_list, key = lambda x : x ** 2))Map 是一个简单的函数,它可以将某个函数应用到其它一些序列元素,例如列表。如果我们有两个列表,我们希望将这两个列表对应的元素相乘,那么使用 lambda 函数和 map 可以快速实现这一功能:[0, -1, 1, -2, 2]
>>> print(list(map(lambda x, y : x * y, [1, 2, 3], [4, 5, 6])))上面的代码非常优雅,如果不用它们两者,那么一般的表达需要写成这样:[4, 10, 18]
>>> x, y = [1, 2, 3], [4, 5, 6]单行条件语句>>> z = []
>>> for i in range(len(x)):
>>> z.append(x[i] * y[i])
>>> print(z)
[4, 10, 18]
如果我们使用条件语句,那么最可能写成下面这个样子:
>>> x = int(input())但其实我们也可以把所有条件都写在 print 函数内,即上面 7 行代码可以等价写成如下一行:>>> if x >= 10:
>>> print("Horse")
>>> elif 1 < x < 10:
>>> print("Duck")
>>> else:
>>> print("Baguette")
print("Horse" if x >= 10 else "Duck" if 1 < x < 10 else "Baguette")这样看起来真的非常简洁,如果你查看以前写的代码,真的有很多都可以改成这种表达式。
zip()
前面在介绍 map() 函数时,我们举了个例子将某个函数应用到平行的两个列表,而 zip() 函数可以更简单地做到这一点。
如果我们有两个列表,第一个列表包含了名,第二个列表包含了姓。使用 zip() 函数,如下我们可以将它们拼接在一起。
>>> first_names = ["Peter", "Christian", "Klaus"]也就是说,zip 将两个等长的列表变为了一对一对的,即 (("Peter", "Jensen"), ("Christian", "Smith"), ("Klaus", "Nistrup"))。以上就是Python之从列表推导到zip()函数的五种技巧的详细内容,更多请关注盛行IT软件开发工作室其它相关文章!>>> last_names = ["Jensen", "Smith", "Nistrup"]
>>> print([' '.join(x) for x in zip(first_names, last_names)])
['Peter Jensen', 'Christian Smith', 'Klaus Nistrup']
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。