python - 如何仅将列表中第一个单词的首字母大写
问题描述
我只想将列表第一个单词的第一个字母大写,其余所有单词按单词长度的升序小写。
z=['The' ,'lines', 'are', 'printed', 'in', 'reverse', 'order']
z.sort(key=len)
print(" ".join(x.lower() for x in z))
我想要这样的结果按长度升序排列。
在是行顺序打印反向:
z=['The' ,'lines', 'are', 'printed', 'in', 'reverse', 'order']
# i tried like this
z.sort(key=len)
s=[]
for x in z:
if (x==0):
s.append(z[0].capitalize())
else:
s.append(z[x].lower())
我试图获得的实际输出:
In the are lines order printed reverse
解决方案
你的代码
for x in z: # ['in', 'The', 'are', 'lines', 'order', 'printed', 'reverse'] if (x==0): s.append(z[0].capitalize()) else: s.append(z[x].lower())
不起作用,因为每个x
都是一个单词z
- 它永远不会等于,0
所以添加的所有东西s
都是你单词的小写版本。
您可以在迭代列表时使用enumerate
它来获取列表中所有元素的索引。
第一个元素必须使用.title()
套管,所有其他元素.lower()
:
z= ['The' ,'lines', 'are', 'printed', 'in', 'reverse', 'order']
z.sort(key=len)
# reformat capitalization based in index, any number != 0 is true-thy
z = [ a.lower() if idx else a.capitalize() for idx, a in enumerate(z) ]
print(" ".join(z))
输出:
In the are lines order printed reverse
z = [ a.lower() if idx else a.capitalize() for idx, a in enumerate(z) ]
是一个列表理解 - 作为正常循环,它看起来像:
s = []
for idx, word in enumerate(z):
if idx: # any idx > 0 is True-thy
s.append(word.lower())
else:
s.append(word.capitalize())
# print the joined s
您可以在此处了解pythonTrue
对非布尔值的考虑: Truth-value-testing
推荐阅读
- java - 与 mySQL 删除查询不一致
- plugins - 在 redmine 中编辑/创建自定义字段时如何触发功能
- javascript - Angular Node 服务器返回您在预期流的位置提供了“未定义”
- scripting - UDEV- 为什么回声不受影响?
- php - 在 Codeigniter 的 form_validation 库中使用 set_value() 函数时面临问题
- firebase - 在firebase云功能中如何获取登录了哪个应用用户
- android - 如何在 android recyclerview 中添加到收藏夹?
- node.js - 运行 npm Start 时我无法解决错误
- google-cloud-platform - GCP IoT 停止处理消息
- amazon-web-services - 保护 Amazon S3 中的资源