如何在 Python 中修改列表中的列表?

所以,我试图使我的列表中的元素大写,但我无法使标准的 something.upper(),我猜测是因为列表中的列表。外汇:

names = [['henry', 'mike'],'jones', 'kevin',['michael', 'simon']]

我该怎么做呢?


动漫人物
浏览 276回答 3
3回答

萧十郎

检查元素是否为列表字符串类型for i in names:    if isinstance(i,list):        for inner_element in i:            print(inner_element.upper())    elif isinstance(i,str): # to handle the case if ints are also present        print(i.upper())如果要替换现有列表中的值for index,i in enumerate(names):    if isinstance(i,list):        temp=[]        for inner_element in i:            temp.append(inner_element.upper())        names[index]=temp    elif isinstance(i,str):        names[index]=i.upper()

aluckdog

如果预先不知道列表的深度,您可以尝试此操作。输入:names=['jones', 'kevin', ['henry', 37, ['a', 0.69999]], ['michael', True]]功能:def recursive_upper(names): ret_list=[] for x in names:     if isinstance(x, list):         ret_list.append(recursive_upper(x))     elif (isinstance(x, basestring) or isinstance(x, int) or isinstance(x, float) \           or isinstance(x, long) or isinstance(x, bool) or isinstance(x, complex)):         ret_list.append(str(x).upper()) return ret_listprint recursive_func(names)输出:['JONES', 'KEVIN', ['HENRY', '37', ['A', '0.69999']], ['MICHAEL', 'TRUE']]该函数只是检查类型,如果类型是列表,则递归调用自身。当它找到字符串、int、float、long、bool 或复杂类型时,它会继续返回文本的大写版本。所有其他类型都被简单地忽略。(您可以在 elif 条件中添加/删除类型。请参阅此处)

RISEBY

您可以按如下方式使用列表推导式:uppercase_names = [ name.upper() if isinstance(name, str) else [n.upper() for n in name if isinstance(n, str)] for name in names ]基本上,我们isinstance(name, str)用来检查对象是否实际上是一个字符串对象。如果列表中有整数,您可以使用这个复杂的理解:uppercase_names = [ name.upper() if isinstance(name, str) else name if isinstance(name, int) else [ n.upper() if isinstance(n, str) else n if isinstance(n, int) else n for n in name ] for name in names ]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python