python:以更好的方式编写代码?

python:以更好的方式编写代码?,python,Python,下面是一个示例代码 >>> array = [('The', 'Blue'),('men','Green'),('his','Red'),('beautiful','Yellow')] >>> z = [y for (x,y) in array] >>> l=[(z[i],z[i+1]) for i in range (len(z)-1)] >>> l >>> [('

下面是一个示例代码

    >>> array = [('The', 'Blue'),('men','Green'),('his','Red'),('beautiful','Yellow')]
    >>> z = [y for (x,y) in array]
    >>> l=[(z[i],z[i+1]) for i in range (len(z)-1)]
    >>> l
    >>> [('Blue', 'Green'), ('Green', 'Red'), ('Red', 'Yellow')]
有没有其他的写作方法?比如说,也许作为一个班轮?以上代码更适合通过控制台运行

谢谢大家

您可以使用以下功能:

>>> array = [('The', 'Blue'),('men','Green'),('his','Red'),('beautiful','Yellow')]
>>> z = [y for (x,y) in array]
>>> zip(z,z[1:])
[('Blue', 'Green'), ('Green', 'Red'), ('Red', 'Yellow')]
您可以使用以下功能:

>>> array = [('The', 'Blue'),('men','Green'),('his','Red'),('beautiful','Yellow')]
>>> z = [y for (x,y) in array]
>>> zip(z,z[1:])
[('Blue', 'Green'), ('Green', 'Red'), ('Red', 'Yellow')]

这可以做为一个班轮,但它看起来相当丑陋

a = [('The', 'Blue'),('men','Green'),('his','Red'),('beautiful','Yellow')]
l = zip(zip(*a)[1], zip(*a)[1][1:])
两行更好:


FWIW,你可以把括号放进去

z = [y for (x,y) in array]
由于您没有使用
x
,因此通常会将其替换为下划线:

z = [y for _,y in array]

这可以做为一个班轮,但它看起来相当丑陋

a = [('The', 'Blue'),('men','Green'),('his','Red'),('beautiful','Yellow')]
l = zip(zip(*a)[1], zip(*a)[1][1:])
两行更好:


FWIW,你可以把括号放进去

z = [y for (x,y) in array]
由于您没有使用
x
,因此通常会将其替换为下划线:

z = [y for _,y in array]
收益率:

[('Blue', 'Green'), ('Green', 'Red'), ('Red', 'Yellow')]
收益率:

[('Blue', 'Green'), ('Green', 'Red'), ('Red', 'Yellow')]

把所有答案放在一起,这一行就行了:

a = [('The', 'Blue'),('men','Green'),('his','Red'),('beautiful','Yellow')]

l = [(i[1],j[1]) for i,j in zip(a, a[1:])]
结果:

>>> print(l)
>>> [('Blue', 'Green'), ('Green', 'Red'), ('Red', 'Yellow')]

只需解释一下,内置函数接受两个或多个iterable,并为每个iterable生成一个包含当前项的元组,直到到达iterable的末尾,且长度最小。

将所有答案放在一起,这一行将起作用:

a = [('The', 'Blue'),('men','Green'),('his','Red'),('beautiful','Yellow')]

l = [(i[1],j[1]) for i,j in zip(a, a[1:])]
结果:

>>> print(l)
>>> [('Blue', 'Green'), ('Green', 'Red'), ('Red', 'Yellow')]

只是为了解释一下,内置函数接受两个或多个iterable,并为每个iterable生成一个包含当前项的元组,直到达到iterable末尾的最小长度。

我投票结束这个问题,因为它更适合@MichaelFoukarakis,谢谢你的建议!从来都不知道codereview的存在。@MichaelFoukarakis的示例代码与代码审查无关。看看相关的,它似乎很好。让我们带着它去聊天吧(也许吧)我投票结束这个问题,因为它更适合@MichaelFoukarakis。谢谢你的建议!从来都不知道codereview的存在。@MichaelFoukarakis的示例代码与代码审查无关。看看相关的,它似乎很好。让我们带着它去聊天吧(也许吧)这比我的一行容易读多了。:)而且效率更高。我同意@PM2Ring的观点,它更容易阅读。非常感谢:)这比我的一行容易读多了。:)而且效率更高。我同意@PM2Ring的观点,它更容易阅读。非常感谢:)非常感谢下划线提示。非常感谢下划线提示。