为我的练习任务寻找更“pythonic”的解决方案

传教士宝贝

每个人。在练习字符串时,我遇到了一个练习任务,这让我很难让我的代码看起来尽可能简单。

任务主体:

编写一个转置字符串列表的函数,其中每个字符串包含多个由空格分隔的单词。具体来说,它应该以这样一种方式执行,如果您将列表 ['abc def ghi', 'jkl mno pqr', 'stu vwx yz'] 传递给函数,它将返回 ['abc jkl stu', 'def mno vwx', 'ghi pqr yz'] 。

我的代码:

old_list = ['abc def ghi', 'jkl mno pqr', 'stu vwx yz']
    
    def func(old_list):
        new_list = []
        sentence = ''.join(old_list)
        index_one = sentence[0:3] + ' ' + sentence[11:14] + ' ' + sentence[22:25]
        index_two = sentence[4:7] + ' ' + sentence[15:18] + ' ' + sentence[26:29]
        index_three = sentence[8:11] + ' ' + sentence[19:22] + ' ' + sentence[30:32]
        new_list.append(index_one)
        new_list.append(index_two)
        new_list.append(index_three)
        return new_list

它看起来很“不好”,即使我能看到。我怎样才能优化它,让它看起来更干净?

乔夫·布伦宁

让我们把问题分成两部分:

  1. 我们如何将字符串转换为列表
  2. 我们如何对列表进行切片和切块以获得您的输出

#1

假设我们有以下字符串,与您的类似。

>>> s1 = '1 2 3'
>>> s2 = '4 5 6'
>>> s3 = '7 8 9'

您可以使用.split()分隔符将文本拆分为列表(默认情况下' '

>>> s1.split()
['1', '2', '3']

让我们对所有的字符串都这样做:

lists = [x.split() for x in [s1, s2, s3]]
>>> lists
[['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9']]

#2

我们如何从所有列表中获取第一个元素,然后是第二个,依此类推?

我们使用ziphttps : //docs.python.org/3.3/library/functions.html#zip

>>> list(zip(*lists))
[('1', '4', '7'), ('2', '5', '8'), ('3', '6', '9')]

如果您的程序希望您将它们显示为字符串,而不是元组列表:

>>> [" ".join(x) for x in zip(*lists)]
['1 4 7', '2 5 8', '3 6 9']

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

更 Pythonic 的单行解决方案?

我正在寻找有关 Python 中列表的任务的解决方案

寻找更优雅的任务处理解决方案

我不明白这个练习的解决方案

SICP 练习 1.16 - 我的解决方案是否正确?

tkinter和configparser:寻找更漂亮的解决方案

我正在寻找style.background的解决方案

在设置大量计时器或使用计划的任务队列之间寻找解决方案

寻找 fetch js/css 解决方案

寻找解决方案时间戳PostgreSQL

寻找最佳解决方案

寻找解决方案以缩短IF公式

在谷歌表中寻找解决方案

寻找类型保护解决方案(TypeScript)

寻找 javascript RegExp 解决方案

我的解决方案或codejam练习的输出方法有什么不正确之处?

有人可以帮助我了解Leetcode的自除数练习的解决方案

指针关于 C 练习 6.18-2,我的解决方案不起作用

我的解决方案有什么问题?(hackerrank 练习 - 按位运算)

我正在寻找不使用Groovy的Java过于冗长的解决方案

寻找解决方案以检查图像大小是否符合我在python中的要求

嗨,我正在寻找一种在Pygame中具有多个按钮的解决方案

我的寻找圆线碰撞解决方案的函数可能有什么问题?

我的任务的最佳解决方案:线程、异步任务还是服务?

报告-像水平联合这样的解决方案可以解决我的任务吗?

简单的Haskell练习解决方案输出错误

Golang Tour WebCrawler练习的简单解决方案

Begginer C ++练习解决方案的意外输出

当有解决方案时,Prolog在寻找解决方案时失败