Python - 索引列表中的元素

Jav*_*tor 0 python arrays list object

我是一名新的Python程序员并尝试了一些东西.我想创建一个字符串列表并循环遍历我的列表以检查每个元素的大小,如果大小大于5,那么我将该字符串更改为大写字符串.我被困在如何访问该元素.以下是我编写的一些代码.先感谢您!

lis = ['heeeeellllooo','world','low','higggghhh']
for elem in list:
  if len(lis[elem]) > 5:
    list[elem].upper()
Run Code Online (Sandbox Code Playgroud)

Ash*_*ary 5

使用list comprehension具有ternary operator:

In [16]: lis = ['heeeeellllooo','world','low','higggghhh']

In [17]: [x.upper() if len(x)>5 else x for x in lis] # this is a new list

Out[17]: ['HEEEEELLLLOOO', 'world', 'low', 'HIGGGGHHH']
Run Code Online (Sandbox Code Playgroud)

你也可以使用enumerate(),enumerate返回tuple整个第一项是元素的索引,第二项是元素本身.

此方法修改原始列表.

In [18]: for index,elem in enumerate(lis):
   ....:     if len(elem)>5:
   ....:         lis[index]=elem.upper()  #access element by index
   ....:         

In [19]: lis
Out[19]: ['HEEEEELLLLOOO', 'world', 'low', 'HIGGGGHHH']
Run Code Online (Sandbox Code Playgroud)

如何实施清单?:

Python的列表实际上是可变长度数组,而不是Lisp风格的链表.该实现使用对其他对象的连续引用数组,并在列表头结构中保留指向此数组和数组长度的指针.

这使得列表的索引成为[i]一种操作,其成本与列表的大小或索引的值无关.

附加或插入项目时,将调整引用数组的大小.一些聪明的东西被用来改善重复追加物品的表现; 当必须增长数组时,会分配一些额外的空间,因此接下来的几次不需要实际调整大小.

  • 给出不可变答案和可变答案的+1,并解释它们是如何工作的. (2认同)