2010-11-19 2 views

ответ

25

Вы можете использовать capitalize() метод:

s = ['my', 'name'] 
s = [item.capitalize() for item in s] 
print s # print(s) in Python 3 

Это будет печатать:

['My', 'Name'] 
+18

капитализация не делает то, что ОП спрашивает. capize также будет делать нижние регистры не первые буквы – lurscher

+6

да, этот ответ вводит в заблуждение: '' naMe'.capitalize() == 'Name'' – Milimetric

12

Вы можете использовать 'my'.title() который будет возвращать 'My'.

Чтобы получить более полный список, просто карта над ним, как это:

>>> map(lambda x: x.title(), s) 
['My', 'Name'] 

На самом деле, .title() делает все слова начинаются с символа верхнего регистра. Если вы хотите строго ограничить его первой буквой, используйте вместо этого capitalize(). (Это делает разницу, например, в «это слово» изменяется либо This Word или This word)

+0

, а также разница между Frank и Frank'S - как указано здесь http://op.to/How.To.Capitalize.First.Letter+ –

+0

Кроме того, 'str.title' - это более простой способ указать' lambda x: x.title() '. – trss

0

Вы можете использовать

for i in range(len(s)): 
    s[i]=s[i].capitalize() 
print s 
+1

Вам не нужно «temp», он ничего не делает, и это то же самое, что «list [i] = list [i] .capitalize()» - это будет работать, только если список OP с именем 's 'было переименовано в' list', но это было бы плохой практикой, потому что это скроет встроенную функцию/тип с тем же именем. Не уверен, почему конечная запятая в заявлении на печать была помещена туда ... – martineau

+0

было опечатать ошибку, чтобы поместить туда запятую. – Kracekumar

5

Это, вероятно, не имеет значения, но вы можете использовать это вместо того, capitalize() или title() строковых методы, потому что, в дополнении к верхнему регистру первой буквы, они также в нижнем регистре остальных строк (и это не делает):

s = map(lambda e: e[:1].upper() + e[1:] if e else '', s) 
+0

+1: хороший улов; однако почему выражение 'if s else ''? Чтобы избежать конкатенации пустых строк? Я считаю, что это преждевременная оптимизация. – tzot

+0

@ ΤΖΩΤΖΙΟΥ: Спасибо. Эта часть существует главным образом потому, что я просто подстроил свой ответ на аналогичный [вопрос] (http://stackoverflow.com/questions/3840843/how-to-downcase-the-first-character-of-a-string-in- питон/3847369 # 3847369). Я предпочитаю думать об этом как о защитном программировании, так как он может обрабатывать элемент списка «Нет» (поэтому нет, его нет, потому что беспокоило о том, что пустой случай строки меньше оптимального). – martineau

+1

Я думаю, что обработка «Нет» - это плохая практика. Я предпочел бы, чтобы в этом случае возникло исключение, за исключением того, что (возможно, неправильная) пустая строка молча прошла. – dbkaplun

45

Оба .capitalize() и .title(), изменяет r букв в строке в нижнем регистре.

Вот простая функция, которая меняет первую букву на верхний регистр и оставляет ее неизменной.

def upcase_first_letter(s): 
    return s[0].upper() + s[1:] 
+0

+1 спасибо за предложение встроенных функций! –

+0

Это не меняет 1-ю букву _each element_ в списке, указанном в вопросе OP. – martineau

+1

Хотя LC, '[i [0] .upper() + i [1:] для i в s]' –