如何让列表所有元素首字母变大写?

x_hola
  • 666

希望列表 c 所有元素首字母变大写,这样写为甚么会出错?该如何写?

c=['zz','yy','xx'] 
c[0:2]=c[0:2].capitalize()

# 提示错误
AttributeError: 'list' object has no attribute 'capitalize'
回复
阅读 13.2k
6 个回答
dokelung
  • 4.9k

capitalize 是字串的方法,而 c[0:2] 是一個 list,所以你調用 captitalize 的時候會出錯.

c = ['zz','yy','xx'] 
c = [string.capitalize() for string in c]

還有這樣也可以:

c = ['xx', 'yy', 'zz']
c = ' '.join(c).title().split()

P.S. 在使用 list 的時候,如果要操作的是整個串列,那不需要特別使用到切片,c[0:2] 在這裡是個不必要的做法.

給你參考!


@moling3650, 使用 title 真的是個有趣的主意,capitalize 只會將字串的首字大寫,而 title 則會將字串中所有的 單字 首字大寫。

見範例:

>>> string = 'my name is dokelung'
>>> string.capitalize()
'My name is dokelung'
>>> string.title()
'My Name Is Dokelung'

所以這樣也行:

>>> c = ['xx', 'yy', 'zz']
>>> ' '.join(c).title().split()
['Xx', 'Yy', 'Zz']
prolifes
  • 11.2k
[_.capitalize() for _ in c]

写个不一样的

c = [_.title() for _ in c]

list对象没有capitalize方法

写个不一样的

map(str.title, c[0:2])
李小白
  • 1
新手上路,请多包涵

L1 = ['adam', 'LISA', 'barT']

def xiaoxie(name):

if name.islower():
    return name
else:
    return name.lower()

L2 = map(xiaoxie,L1)
L2 =[string.capitalize() for string in L2]
print(list(L2))

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏