有人可以帮我做两件事:
我们走了:
t = ['a', 'b', ['c', 'd'], ['e'], 'f']
def capitalize_list(t):
L = []
N = []
for i in range(len(t)):
if type(t[i]) == str:
L.append(t[i].capitalize())
if type(t[i]) == list:
L.extend(t[i])
for s in L:
N.append(s.capitalize())
print N
capitalize_list(t)
此代码打印:
['A', 'B', 'C', 'D', 'E', 'F']
我需要它打印:
['A', 'B', ['C', 'D'], ['E'], 'F']
答案 0 :(得分:2)
您可以使用递归:
def capitalize_list(t):
N = []
for i in range(len(t)):
if type(t[i]) == str:
N.append(t[i].capitalize())
if type(t[i]) == list:
N.append(capitalize_list(t[i]))
return N
输出:
['A', 'B', ['C', 'D'], ['E'], 'F']
答案 1 :(得分:1)
递归执行此操作的另一种方法:
def capitalize(item):
if type(item) is str:
return item.capitalize()
if type(item) is list:
return map(capitalize, item)
你甚至可以做到
def capitalize(item):
try:
return item.capitalize()
except AttributeError:
return map(capitalize, item)
- 对于任何拥有它的对象(例如普通字符串或unicode字符串)使用大写方法,并尝试迭代任何没有的对象。