为了账号安全,请及时绑定邮箱和手机立即绑定

关于多层表达式

names = ['aDam', 'barT']

print [names.capitalize() for x in names]

把首字母全部改成大写,请问为什么这个代码不行呢?

正在回答

3 回答

print [names.capitalize() for in names] 不是names.capitalize()

应该是x.capitalize()

该语句读的顺序应该是从右到左

x是names的元素 可以是'aDam'或者是‘barT'

所以首字母大写应该作用在x上面 而并非是names上面

希望可以帮助到你 谢谢




1 回复 有任何疑惑可以回复我~
#1

人称大帅逼 提问者

非常感谢!
2018-04-13 回复 有任何疑惑可以回复我~
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
任务:
假设用户输入的英文名字不规范,没有按照首字母大写,后续字母小写的规则,
请利用map()函数,把一个list(包含若干不规范的英文名字)变成一个包含规范英文名字的list:
输入:['adam', 'LISA', 'barT']
输出:['Adam', 'Lisa', 'Bart']
'''

# 第一种方法
L = ['adam', 'LISA', 'barT']
def f(x):
    return x.title()  # title方法 将字符串转换成标题,即首字母大写,其他字母小写
print map(f, L)

# 第二种方法
import string
def f(x):
    return string.capwords(x)  # 为了将首字母大写,其他字母小写,可以调用string模块的capword函数进行转换
print map(f, ['adam', 'LISA', 'barT'])


# 第三种方法
# Python capitalize()将字符串的第一个字母变成大写,其他字母变小写。
def f(x):
    return x.capitalize()
print map(f, ['adam', 'LISA', 'barT'])


3 回复 有任何疑惑可以回复我~
#1

Huffie

膜拜大神!
2018-10-07 回复 有任何疑惑可以回复我~

Python中captitalize()是将字符串的第一个字母变成大写,其他字母变小写。你的代码里names是list,x才是str。

改:print [x.capitalize() for x in names]


1 回复 有任何疑惑可以回复我~
#1

人称大帅逼 提问者

谢谢你!好想两个都能作为最佳回答orz
2018-04-13 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255665    人
  • 解答问题       2949    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

关于多层表达式

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信