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

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

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

动漫人物 2021-07-16 18:03:48
所以,我试图使我的列表中的元素大写,但我无法使标准的 something.upper(),我猜测是因为列表中的列表。外汇:names = [['henry', 'mike'],'jones', 'kevin',['michael', 'simon']]我该怎么做呢?
查看完整描述

3 回答

?
萧十郎

TA贡献1815条经验 获得超13个赞

检查元素是否为列表字符串类型


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()


查看完整回答
反对 回复 2021-07-27
?
aluckdog

TA贡献1847条经验 获得超7个赞

如果预先不知道列表的深度,您可以尝试此操作。


输入:


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_list


print recursive_func(names)

输出:


['JONES', 'KEVIN', ['HENRY', '37', ['A', '0.69999']], ['MICHAEL', 'TRUE']]

该函数只是检查类型,如果类型是列表,则递归调用自身。当它找到字符串、int、float、long、bool 或复杂类型时,它会继续返回文本的大写版本。所有其他类型都被简单地忽略。(您可以在 elif 条件中添加/删除类型。请参阅此处)


查看完整回答
反对 回复 2021-07-27
?
RISEBY

TA贡献1856条经验 获得超5个赞

您可以按如下方式使用列表推导式:

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 ]



查看完整回答
反对 回复 2021-07-27
  • 3 回答
  • 0 关注
  • 275 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信