Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将索引1处的元素转换为嵌套列表中的upper()?_Python_Python 3.x - Fatal编程技术网

Python 如何将索引1处的元素转换为嵌套列表中的upper()?

Python 如何将索引1处的元素转换为嵌套列表中的upper()?,python,python-3.x,Python,Python 3.x,如何仅使用列表理解将内部列表中索引1处的每个元素转换为上限 ed_sheeran = [ [j.upper() for j[1] in i ] for i in ed_sheeran ] # My code but not working. ed_sheeran = [[' ', 'w', 'h', 'i', 't', 'e', ' ', 'l', 'i', 'p', 's', ',', ' ', 'p', 'a', 'l', 'e', ' ', 'f', 'a', 'c', 'e', '

如何仅使用列表理解将内部列表中索引1处的每个元素转换为上限

ed_sheeran = [ [j.upper() for j[1] in i ] for i in ed_sheeran ] # My code but not working.


ed_sheeran =  [[' ', 'w', 'h', 'i', 't', 'e', ' ', 'l', 'i', 'p', 's', ',', ' ', 'p', 'a', 'l', 'e', ' ', 'f', 'a', 'c', 'e', ' '], [' ', 'b', 'r', 'e', 'a', 't', 'h', 'i', 'n', 'g', ' ', 'i', 'n', ' ', 's', 'n', 'o', 'w', 'f', 'l', 'a', 'k', 'e', 's', ' '], [' ', 'b', 'u', 'r', 'n', 't', ' ', 'l', 'u', 'n', 'g', 's', ' ', 's', 'o', 'u', 'r', ' ', 't', 'a', 's', 't', 'e', ' ']]

for i in ed_sheeran:
    i[1] = i[1].upper()    
print(ed_sheeran)

Output: 
[[' ', 'W', 'h', 'i', 't', 'e', ' ', 'l', 'i', 'p', 's', ',', ' ', 'p', 'a', 'l', 'e', ' ', 'f', 'a', 'c', 'e', ' '], [' ', 'B', 'r', 'e', 'a', 't', 'h', 'i', 'n', 'g', ' ', 'i', 'n', ' ', 's', 'n', 'o', 'w', 'f', 'l', 'a', 'k', 'e', 's', ' '], [' ', 'B', 'u', 'r', 'n', 't', ' ', 'l', 'u', 'n', 'g', 's', ' ', 's', 'o', 'u', 'r', ' ', 't', 'a', 's', 't', 'e', ' ']]

只需将列表的其他部分缝合在一起,确保所有元素都在列表中

[[x[0], x[1].upper()] +  x[2:] for x in ed_sheeran]

只需枚举子列表,如果索引值为1,则将单个元素更改为上限

[[y.upper() if i==1 else y for i,y in enumerate(x)]  for x in ed_sheeran]
.upper将返回一个新字符串,而不是就地更新它-另一方面,attribute语句=不用于诸如列表理解之类的表达式中

但是,如果调用列表上的uuu setitem_uuuu方法(通常由=)可以在表达式中替换列表元素。如果希望通过不直接调用dunder u_setitem __; methos来保持整洁,可以使用operator.setitem作为表达式:

from operator import setitem
ed_sheeran = [setitem(part, 1, part[1].upper()) for part in ed_sheeran ]
或者,如果您希望不导入setitem:

实际上,这是在原地完成的,因此您甚至不需要重新分配outter列表-尽管如果您不想在内存中创建新列表,并使用生成器表达式,则需要使用生成器。在这种情况下,any内置是一个不错的选择:

any(part.__setitem__(1, part[1].upper()) for part in ed_sheeran)

这之所以有效,是因为uu setitem_uuu_uu_uu_uu_u_u_u_u_u_u_u_u_u_u_u_u_____;返回无

@HolyDanna不仅发布了他的尝试,还。这是一个非常好的问题。@HolyDanna阅读了这个问题,OP已经通过列表理解写下了他尝试的内容。他甚至对我的代码进行了注释,但不起作用。为什么需要使用列表理解?在循环中这样做更有效、更可读,如果您确定:对于en_sheeran中的e:e[1]=e[1],您可以在一行中这样做。upper@MoxieBall我只是想看看它是如何在python中使用列表理解的。我对它进行了更新,但出于解释的目的,我想把它画出来。这几乎和字符串列表一样,所以你可以使用字符串列表,而不是一开始就使用列表。它只需要以一种使用泛型序列的方式编写即可:[x[0]+x[1]。我可以知道什么是枚举吗?它是一个与循环相关的函数吗?是的-对于序列中的每个项,它都会生成项索引和项本身,并且在循环中两者都可用。
any(part.__setitem__(1, part[1].upper()) for part in ed_sheeran)