Python中的列表:可变性,实用程序和可访问性

列表是python中的一个序列。 list的字典含义是“连续写或打印的许多连接项目或名称”。 它的字典含义和在编写程序时在Python中的用法没有太大区别。

我们经常使用列表,无论是在日常生活中(例如列出要购买的杂货),还是在程序中(例如创建素数列表)。 每当我们希望根据某些条件对某些项目进行分组时,我们都会列出清单。

Python列表提供了相同的功能,您可以灵活地对每个元素进行随机访问,修改每个元素,从中添加或删除元素来对项目进行分组。

因此,让我们从创建列表开始。

list1 = [ 1 , 2 , 3 , 4 , 5 ]
>>>  list1
[ 1 , 2 , 3 , 4 , 5 ]
>>>  type(list1)
<type 'list' >
type()是python中的一个函数,它返回变量的对象类型。

在python中创建列表非常简单。 您可以通过2种方式来实现。 第一个是将元素括在方括号中,如上例所示。 其他正在使用list()函数。

>>>  list1 = list([ 1 , 2 , 3 , 4 , 5 ])
>>>  list1
[ 1 , 2 , 3 , 4 , 5 ]
>>>  type(list1)
<type 'list' >

关于列表的一件有趣的事情是,它们将对对象或元素的引用存储在其中。 因此,在将列表重新分配给另一个变量时,python只会更改引用,而不会创建新的列表对象。

# id() function returns the object id.
>>>  id(list1)
4426491160
>>>  list2 = list1
>>>  id(list2)
4426491160

我们可以看到两个变量代表相同的对象。 这确实加快了程序的执行速度。 列表是一个全局变量,这意味着当您声明一个列表并将其作为参数传递给函数时,而不是将其复制并传递给该函数时,python会将对列表的引用传递给它。

上面的概念称为通过引用行为。 如果您知道什么是按值传递和按引用传递,那么请跳至下一点,或者如果您想了解更多信息,请阅读以下文章。

https://robertheaton.com/2014/02/09/pythons-pass-by-object-reference-as-explained-by-philip-k-dick/

访问元素

Python为从0开始的每个列表元素分配一个索引。因此,如果要访问列表中的特定元素,可以通过其索引访问它。 但是为此,您应该知道元素的索引。 即使您不知道,也不必担心有一种解决方案。 但是,现在让我们尝试按其索引访问元素。

>>>  list1
[ 1 , 2 , 3 , 4 , 5 ]
>>>  print(list1[ 0 ])
1
>>>  print(list1[ 2 ])
3
>>>  print(list1[ 1 ])
2

如果传递的索引与列表不相关或该索引中没有元素,则该列表将引发IndexError。

>>>  list1
[ 1 , 2 , 3 , 4 , 5 ]
>>>  print(list1[ 9 ])
Traceback (most recent call last):
File "<stdin>" , line 1 , in <module>
IndexError: list index out of range
>>>

在某些情况下,您知道要访问的元素,但不知道其索引。 在这种情况下,您可以在相应列表中搜索该元素,然后搜索(如果有列表,则使用index函数)将返回该元素的索引。

>>>  list1
[ 1 , 2 , 3 , 4 , 5 ]
>>>  list1.index( 2 )
1 // index of 2
List的可变行为。

列表数据类型属于“可变数据结构”类别。 可变意味着您甚至可以在定义数据结构后对其进行任何更改。 那么,您可以对列表进行哪些更改? 您可以更新元素,添加新元素并删除元素。

让我们看看。

更新列表元素

>>>  list1
[ 1 , 2 , 3 , 4 , 5 ]
>>>  list1[ 0 ] = 2
>>>  list1
[ 2 , 2 , 3 , 4 , 5 ]

删除列表元素

>>>  list1
[ 2 , 2 , 3 , 4 , 5 ]
>>>  list1.remove( 5 ) #remove element 5
>>>  list1
[ 2 , 2 , 3 , 4 ]

更新和删除元素既简单又直接。 现在,当涉及到将元素添加到列表时,有很多方法可以做到这一点。 所有这一切都取决于您要在何处添加元素。 其中之一是使用insert()函数。

插入元素

list.insert(index,value)有2个参数。 第一个是要添加元素的位置,第二个是元素或值本身

>>>  list1
[ 2 , 2 , 3 , 4 ]
>>>  list1.insert( 4 , 89 )
>>>  list1
[ 2 , 2 , 3 , 4 , 89 ] #inserting 89 at 4th index.

如果您提供的索引比列表大小大得多怎么办? 好吧,在这种情况下,列表会将元素添加到其最后一个索引。

>>>  list1
[ 2 , 2 , 3 , 4 , 89 ]
>>>  list1.insert( 100000 , 100 )
>>>  list1
[ 2 , 2 , 3 , 4 , 89 , 100 ]

除了插入之外,还可以使用append()将元素添加到列表的末尾。

>>>  list1 = [ 2 , 2 , 3 , 4 , 89 , 100 ]
>>>  list1.append( 67 )
>>>  list1
[ 2 , 2 , 3 , 4 , 89 , 100 , 67 ]

我们已经看到了带有列表的基本CRUD操作。 该列表具有许多内置功能。 我们不会涵盖所有这些内容。 但是,如果您想了解更多,请转到以下链接。

https://docs.python.org/3/tutorial/datastructures.html

不可变数据结构列表

我们可以有一个元组列表吗? 元组是不可变的对象,列表是可变的对象。 那么,如果我们声明一个元组列表,它将变得可变吗? 让我们检查一下。

>>>  list1.insert( 6 ,( "element1" , "element2" ))
>>>  list1
[ 2 , 2 , 3 , 4 , 89 , 100 , ( 'element1' , 'element2' )]
>>>  type(list1)
<type 'list' >
>>>  type(list1[ 6 ])
<type 'tuple' >
>>>  list1[ 6 ][ 0 ]= 3
Traceback (most recent call last):
File "<stdin>" , line 1 , in <module>
TypeError: 'tuple' object does not support item assignment

因此,即使将不可变的对象存储在列表中,python也不会更改对象的属性。

列表可以具有任何数据类型作为其成员,无论它是字典,元组,字符串还是其他列表。 这是程序员如此频繁使用列表的原因之一。

有更多关于列表的知识。 一旦开始使用列表,您将学到这一点。 但是,基本知识对于学习高级用法始终是必需的。 我已经在这里介绍了基本原理。 如果您了解这些CRUD操作,则可以学习列表的高级用法。

因此,去探索更多。 我建议您也学习列表理解。 在将循环与列表一起使用时,这将对您有很大帮助。 今天就这样。 继续阅读。 再见

From: https://hackernoon.com/lists-in-python-mutability-utility-and-accessibility-sfhg3atl

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值