【问题标题】:Python- in need of help to simplify my codePython - 需要帮助来简化我的代码
【发布时间】:2016-12-03 18:36:00
【问题描述】:

所以我有一个列表和一个 for 循环(对不起,仍然是初学者),我想要这段代码,但以更简化的方式,没有新的向后列表。 ^编辑

lyrics = [["First", "and a partride in a pear tree",], ["second", "2 things"], ["Third", "3 things"], ["Fourth", "4 things"], ["Fifth", "5 things"], ["Sixth", "six things"], ["Seven", "7 things"], ["Eigth", "8 things"], ["Nineth", "nine things"], ["tenth", "Ten things"], ["eleventh", "eleven things"], ["Twelveth", "twelve things"]]

backwards = []

for i in range(12):
    print("On the", lyrics[i][0], "my true love gave to me,               lyrics[i][1])
backwards.append(lyrics[i][1])
for each in backwards:
    print (each) #Forgot how i did it in the reverse order but i want this in a more simplified version to learn from.

PS:希望尽可能少的行(我能够在 8 行中完成,但希望至少 3-4 行):/

【问题讨论】:

  • 您能告诉我们您是如何在 8 行中实现这一目标的吗?
  • 在学校设法做到了,但我将每个索引存储在另一个列表中,然后逐行打印列表:/
  • 您甚至可以在一行中实现它。向我们展示您尝试了什么以及您想要的输出。我们将提供实现它的最佳方法。这就是魔术在 SO 上的工作方式:)
  • 好吧,我重做我的 8 行版本。
  • @MoinuddinQuadri,你如何在一行中做到这一点? (只是好奇;除非你的意思是你可以把 for 循环头和打印在同一行)。

标签: python list for-loop list-comprehension


【解决方案1】:

首先,不要将list 用于您的变量:它是一个内置函数。

二、打印切片:

for i in range(len(l)):
    print(list(reversed(l[:i+1])))

【讨论】:

  • print(reversed(l[:i+1])) 可能是。
  • 您好,我阅读了有关切片的内容,您能详细说明一下吗?现在将尝试使用您的改进。
  • reversed 在 python 3 上返回一个迭代器:输出为 <list_reverseiterator object at 0x0000000003D8B240> <list_reverseiterator object at 0x0000000003D8B240> <list_reverseiterator object at 0x0000000003D8B240>。得到一个列表做print(l[:i+1][::-1])
  • @Envurb 这是一个很好的解释:stackoverflow.com/questions/509211/…
  • 对,在示例中添加了 list()。
【解决方案2】:

您可以在这里使用range

my_str = ['A', 'B', 'C']
for i, val in enumerate(my_str):
    print ' '.join(my_str[i::-1])

或者,在一行中为:

print '\n'.join(' '.join(my_str[i::-1]) for i in range(len(my_str))

这两个都会打印出来:

A
B A
C B A

我不确定这是否是我们想要的。该结果基于:

我怎样才能让它打印出来,然后打印 B 和 A,最后打印 C 和 B 和 A。

【讨论】:

  • 是的,但不是。我在帖子上更新了我的代码。我使用二维列表。那么有没有办法用你的代码做到这一点,只打印该列表索引的第二个索引?
  • @Envurb:请提及输入列表和所需的输出。现在我不知道你想要什么。另外,因为你现在想要的和你一开始提到的完全不同。创建一个单独的问题并将此问题回滚到以前的版本
  • 那将是个好主意。对此感到抱歉,我从来没有真正寻求过我的代码帮助。我现在提出一个新问题。
  • 它不会让我创建一个新问题:/
  • 好的,我再次更改了标题和帖子以减少混乱。
猜你喜欢
  • 2011-08-13
  • 2014-12-23
  • 1970-01-01
  • 1970-01-01
  • 2021-09-05
  • 2020-02-22
  • 1970-01-01
  • 2014-11-02
  • 1970-01-01
相关资源
最近更新 更多