python中的zip()函数详解,python中zip方法

  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)

  >>> print([stupid_func(1), stupid_func(3), stupid_func(5)])

  [6, 14, 30]

那么我们为什么要用上面的表达式?很大一部分原因在于,当我们想执行一些简单运算时,可以不需要定义真实函数就能完成。例如排序列表元素,一种直观的方法可以使用 sorted() 方法:

  

>>> my_list = [2, 1, 0, -1, -2]

  >>> print(sorted(my_list))

  [-2, -1, 0, 1, 2]

这只能默认从大到小或从小到大排序,但是借助 Lambda 表达式,我们可以实现更自由的排序标准。如下所示我们希望根据最小的平方数对列表进行排序,其可以使用 Lambda 函数定义键,从而告诉 sorted() 方法该怎样排序。

  

>>> print(sorted(my_list, key = lambda x : x ** 2))

  [0, -1, 1, -2, 2]

Map 是一个简单的函数,它可以将某个函数应用到其它一些序列元素,例如列表。如果我们有两个列表,我们希望将这两个列表对应的元素相乘,那么使用 lambda 函数和 map 可以快速实现这一功能:

  

>>> 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())

  >>> if x >= 10:

  >>> print("Horse")

  >>> elif 1 < x < 10:

  >>> print("Duck")

  >>> else:

  >>> print("Baguette")

但其实我们也可以把所有条件都写在 print 函数内,即上面 7 行代码可以等价写成如下一行:

  

print("Horse" if x >= 10 else "Duck" if 1 < x < 10 else "Baguette")
这样看起来真的非常简洁,如果你查看以前写的代码,真的有很多都可以改成这种表达式。

  zip()

  前面在介绍 map() 函数时,我们举了个例子将某个函数应用到平行的两个列表,而 zip() 函数可以更简单地做到这一点。

  如果我们有两个列表,第一个列表包含了名,第二个列表包含了姓。使用 zip() 函数,如下我们可以将它们拼接在一起。

  

>>> first_names = ["Peter", "Christian", "Klaus"]

  >>> last_names = ["Jensen", "Smith", "Nistrup"]

  >>> print([' '.join(x) for x in zip(first_names, last_names)])

  ['Peter Jensen', 'Christian Smith', 'Klaus Nistrup']

也就是说,zip 将两个等长的列表变为了一对一对的,即 (("Peter", "Jensen"), ("Christian", "Smith"), ("Klaus", "Nistrup"))。以上就是Python之从列表推导到zip()函数的五种技巧的详细内容,更多请关注盛行IT软件开发工作室其它相关文章!

  

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: