Python中的清单

  • 列表是一个包含多个值的值(可变序列)
  >>> x = [1,2,'abc',2.5] 
  >>> x 
  [1、2,“ abc”,2.5] 
  • 我们可以使用 以0(不是1)开头 的整数 索引 访问列表中的项目
  >>> x [0] 
  1个 
  • 我们可以使用 负索引 来引用列表中的最后一项
  >>> x [-1] 
  2.5 
  • 要从列表中获取多个项目,请使用 slice
  >>> x [0:2] 
  [1,2] 
  #基本上获取列表的每个值 
  >>> x [0:] 
  [1、2,“ abc”,2.5] 
  • 所有 处理字符串 功能 与列表的工作方式相同,例如:len()
  >>> len(x) 
  4 
  • 要从列表中删除值,请使用 del
  >>> del x [0] 
  >>> x 
  [2,'abc',2.5] 
  • 我们可以通过将值传递给 list() 函数 将其转换为 列表
  >>>列表('hello') 
  ['你好'] 
  • 要找出列表 中的 值,请 运算符 中使用
  >>>'hello'中的'h' 
  真正 
  #相反的不在运算符中 
  >>>'h'不在'hello'中 
   
  • 与列表一起使用for循环,因此您可以看到for循环遍历列表中的值
  >>>对于x中的i: 
  …打印(i) 
   
  2 
  abc 
  2.5 
  • range() 函数返回类似列表的值, 如果需要实际值 ,可以将其传递给 list() 函数
  >>>列表(范围(0,4)) 
  [0,1,2,3] 

让我们再举一个例子

  >>>项目= [“ a”,“ b”,“ c”,“ d”] 
>>>对于范围内的我(len(items)):
  ... print(“” + str(i)+“的值等于:” + items [i]) 
  ... 
  0处的值等于:a 
  1处的值等于:b 
  2处的值等于:c 
  3处的值等于:d 

交换变量

  >>> a,b,c = 1,2,3 
  >>>一个 
  1个 
  >>> b 
  2 
  >>> c 
  3 

列出方法

方法是在值上调用的函数。 列出有几种方法

  • index() list方法返回列表中项目的索引
  >>>测试= [“ a”,“ b”,“ c”,“ d”] 
  >>> test.index(“ a”) 
  0 
  #如果找不到值,索引方法将引发异常 
  >>> test.index(“ e”) 
  追溯(最近一次通话): 
  中第1行的文件“ ” 
  ValueError:“ e”不在列表中 
  #现在在重复列表的情况下,它仅返回第一个值的索引 
  >>> test = [“ a”, “ b” ,“ c”,“ d”,“ a”, “ b” ] 
  >>> test.index(“ b”) 
  1个 
  • append() list方法将一个值添加到列表的末尾
  >>> test.append(“ z”) 
  >>>测试 
  ['a','b','c','d','a','b','z'] 
  • insert() 列表方法在列表内的任意位置添加一个值
  >>> test.insert(0,“ hola”) 
  >>>测试 
  ['hola','a','b','c','d','a','b','z'] 
  • remove() list方法从列表中删除由值指定的项目
  >>> test.remove(“ a”) 
  >>>测试 #仅删除该值的第一个事件 
  ['hola','b','c','d','a','b','z'] 
  • reverse():可以通过调用列表的reverse()方法来反转列表
  >>> a = [2,5,1,3,6,4] 
  >>> a.reverse() 
  >>>一个 
  [4、6、3、1、5、2] 
  • sort() list方法 列表中的项目进行排序
  >>> test1 = [8,3,9,4,6,3] 
  >>> test1.sort() 
  >>> test1 
  [3、3、4、6、8、9] 

但是,如果我们要对数字和字符串的组合进行排序,则python会引发错误, 因为它不知道如何对其进行排序

  >>> test2 = [1,2,3,“ a”,“ b”] 
  >>> test2 = [1,3,2,6,5,“ a”,“ b”] 
  >>> test2.sort() 
  追溯(最近一次通话): 
  中第1行的文件“ ” 
  TypeError:“ str”和“ int”的实例之间不支持“ <” 

排序的方式是使用 大写 优先的 ASCII字母 顺序

  >>> test3 = ['a','b','A','B'] 
  >>> test3.sort() 
  >>> test3 
  ['A','B','a','b'] 

这看起来不太好,因为A应该跟在a后面,所以要通过 str.lower 进行技术上的转换

  >>> test3.sort(key = str.lower) 
  >>> test3 
  ['A','a','B','b'] 
  #键的重要用例,我们使用len作为键(此处根据长度进行排序) 
>>> b
  ['hello','how','are','u','Mr','Prashant'] 
  >>> b.sort(key = len) 
  >>> b 
  ['u','Mr','how','are','hello','Prashant'] 

注意:这些列表方法在“就地”列表上操作,而不是返回新的列表值

  • Sorted():内置函数对所有可迭代序列进行排序并返回列表
  >>> x = [5,2,3,1] 
  >>>排序(x) 
  [1、2、3、5] 
  >>> x 
  [5,2,3,1] 
  • count(): Count返回匹配元素的数量
  >>> a = [1,2,3,4,1,23,5,6] 
  >>> a.count(1) 
  2 

我们需要特别 注意的 几件事

  >>>测试= [1,2,3,4] 
  >>> test1 =测试 
  >>> test1 
  [1、2、3、4] 
  >>> test1 [0] = 9 
  >>> test1 
  [9,2,3,4] 
  >>>测试 
  [9,2,3,4] 

我们只更改了test1的值,但是test的值被更改了吗?

原因是,当我们创建此列表(测试)时,Python在计算机内存中创建了此列表,但已为其分配了 对test 引用。

  test1 =测试 

将引用复制到test1,并且它们引用同一列表,这将导致各种奇怪的错误,因此在处理列表时请务必小心

我们不存在 字符串/元组之 类的不可变值的问题, 因为我们无法用新值替换它

  >>> a =“ abc” 
  >>> b = a 
  >>> b =“ efg” 
  #b的变化不会影响a 
>>> b
  'efg' 
  >>>一个 
  'abc 

让我们更深入地研究同一个概念,因为您看到的只是这里正在更改的参考。现在我们无法达到x = 100,因此在某个时间点,Python垃圾收集器会解决这个问题。

  • id():返回对象的唯一标识符
  >>> x = 100 
  >>> id(x) 
  4340331440 
  >>> x = 50 
  >>> id(x) 
  4340329840 

因此,如何解决此类问题,我们需要一个完全独立的列表,为此,我们有一个名为 copy的 模块 (copy有 一个 名为 deepcopy的 模块 ,它创建了一个全新的列表并返回对新列表的引用)

  >>> x = [1,2,3] 
  >>>导入副本 
  >>> y = copy.deepcopy(x) 
  >>> y 
  [1,2,3] 
  >>> y [0] = 4 
  >>> y 
  [4,2,3] 
  >>> x 
  [1,2,3] 

或(全片技术)

  >>> a = [4,5,6] 
  >>> b = a [:] 
  >>> b 
  [4、5、6] 
  >>> id(a) 
  4325208200 
  >>> id(b) 
  4325208328 
  >>> b [0] = 10 
  >>> b 
  [10、5、6] 
  >>>一个 
  [4、5、6]