【问题标题】:Selecting part of a string in a list在列表中选择部分字符串
【发布时间】:2018-09-21 22:15:12
【问题描述】:

我正在尝试编写一个程序,该程序按行星从太阳的位置降序显示行星列表中的行星名称。

正如您在下面看到的,我已经设法弄清楚如何根据它们与太阳的位置(字符串中的第三个值)对不同的行星进行排序,但我不知道如何删除数字并只显示文本,因为它显示列表中的整个字符串,而不仅仅是我想要的星球名称。有什么想法吗?

planet_tuples=[
    ("Mercury",75,1),
    ("Venus",460,2),
    ("Mars",140,4),
    ("Earth",510,3),
    ("Jupiter",62000,5),
    ("Neptune",7640,8),
    ("Saturn",42700,6),
    ("Uranus",8100,7),
    ]
s=(sorted(planet_tuples,key=lambda planet: planet[2],reverse=True))
s.remove(planet_tuples[])
print (s)

【问题讨论】:

  • 所以你只想要名字? [i[0] for i in s] 排序后
  • 成功了,谢谢!不明白为什么我没有早点想到!
  • @chrisz,我的错,我在写我的问题时一定没有在类似的问题中看到这个,谢谢!

标签: python


【解决方案1】:

您可以使用list comprehension 提取tuple 的第一个元素:

print ([x[0] for x in s])

结果:

['Neptune', 'Uranus', 'Saturn', 'Jupiter', 'Mars', 'Earth', 'Venus', 'Mercury']

【讨论】:

  • 太棒了! Happy Coding.
  • sum(s, ())) 你为什么建议使用反模式从不使用sum 连接序列。那是O(N ^ 2)。使用itertools.chain 或扁平化列表理解。
  • @juanpa.arrivillaga 我只是在尝试其他替代方案,可能不是好主意,将其删除。
  • 展平然后切片并不疯狂——它可以是 O(N),但如果你的展平操作是 O(N^2) 则不是
猜你喜欢
  • 2020-10-26
  • 2016-10-24
  • 2021-05-27
  • 1970-01-01
  • 2021-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-01
相关资源
最近更新 更多