❤️💕💕
python
是一种动态的解释形语言,由于python
的普遍性,学会python
能更快的解决问题,以及学习其他的知识。Myblog:http://nsddd.top
[TOC]
列表用于将多个项目存储在单个变量中。
列表是 Python 中用于存储数据集合的 4 种内置数据类型之一,另外 3 种是Tuple、 Set和Dictionary,它们都具有不同的质量和用途。
创建一个列表:
thislist = ["apple", "banana", "cherry"]
print(thislist)
列表项是有序的、可更改的,并且允许重复值。
列表项被索引,第一项具有索引[0]
,第二项具有索引[1]
等。
列表是可更改的,这意味着我们可以在创建列表后更改、添加和删除列表中的项目。
由于列表是索引的,因此列表可以包含具有相同值的项目:
thislist = ["apple", "banana", "cherry", "apple", "cherry"]
print(thislist)
要确定列表有多少项,请使用以下 len()
函数:
打印列表中的项目数:
thislist = ["apple", "banana", "cherry"]
print(len(thislist))
列表项可以是任何数据类型:
字符串、整数和布尔数据类型:
list1 = ["apple", "banana", "cherry"]
list2 = [1, 5, 7, 9, 3]
list3 = [True, False, False]
一个列表可以包含不同的数据类型:
包含字符串、整数和布尔值的列表:
list1 = ["abc", 34, True, 40, "male"]
从 Python 的角度来看,列表被定义为数据类型为“列表”的对象:
<class 'list'>
列表的数据类型是什么?
mylist = ["apple", "banana", "cherry"]
print(type(mylist))
创建新列表时也可以使用list()构造函数。
使用list()
构造函数创建一个列表:
thislist = list(("apple", "banana", "cherry")) # note the double round-brackets
print(thislist)
Python 编程语言中有四种集合数据类型:
- List是一个有序且可变的集合。允许重复成员。
- **元组**是一个有序且不可更改的集合。允许重复成员。
- **Set**是一个无序、不可更改*和无索引的集合。没有重复的成员。
- **字典是一个有序的集合和可变的。没有重复的成员。
套装物品*不可更改,但您可以随时删除和/或添加物品。
**从 Python 3.7 版开始,字典是有序的。在 Python 3.6 及更早版本中,字典是无序的。
选择集合类型时,了解该类型的属性很有用。为特定数据集选择正确的类型可能意味着保留意义,并且可能意味着提高效率或安全性。
In [10]: a
Out[10]: ['asfa', 'sad']
In [11]: str(a)
Out[11]: "['asfa', 'sad']"
In [12]: a
Out[12]: ['asfa', 'sad']
In [13]: type(a)
Out[13]: list
In [14]: a = {12,31,4,1,3,}
In [15]: a
Out[15]: {1, 3, 4, 12, 31}
In [16]: type(a)
Out[16]: set
In [17]: a = (12,31,4,1,3)
In [18]: a
Out[18]: (12, 31, 4, 1, 3)
In [19]: type(a)
Out[19]: tuple
In [20]: a = [12,31,4,1,3]
In [21]: type(a)
Out[21]: list
直接更改就好,不需要很对操作
In [15]: a
Out[15]: [12, 31, 4, 1, 3]
In [16]: a[1] = 14
In [17]: a
Out[17]: [12, 14, 4, 1, 3]
In [18]: a[0:3] = [1,2,3]
In [19]: a
Out[19]: [1, 2, 3, 1, 3]
要插入一个新的列表项,而不替换任何现有值,我们可以使用该insert()
方法。
该insert()
方法在指定索引处插入一个项目:
插入“西瓜”作为第三项:
In [20]: thislist = ["apple", "banana", "cherry"]
...: thislist.insert(2, "watermelon")
...: print(thislist)
['apple', 'banana', 'watermelon', 'cherry']
In [23]: a.insert(1,123142)
In [24]: a
Out[24]: [1, 123142, 2, 3, 1, 3]
插入还有其他的方法,叫做添加列表项
使用该append()
方法附加一个项目:
thislist = ["apple", "banana", "cherry"]
thislist.append("orange")
print(thislist)
####
In [24]: a
Out[24]: [1, 123142, 2, 3, 1, 3]
In [25]: a.append(1111)
In [26]: a
Out[26]: [1, 123142, 2, 3, 1, 3, 1111]
但是要在指定索引处插入列表项,请使用insert()
方法。
该insert()
方法在指定索引处插入一个项目:
插入一个项目作为第二个位置:
thislist = ["apple", "banana", "cherry"]
thislist.insert(1, "orange")
print(thislist)
要将另一个列表中的元素附加到当前列表,使用该extend()
方法。
In [29]: b = ["a",12,3,"s","d"]
In [30]: a
Out[30]: [1, 123142, 2, 3, 1, 3, 1111]
In [31]: a.extend(b)
In [32]: a
Out[32]: [1, 123142, 2, 3, 1, 3, 1111, 'a', 12, 3, 's', 'd']
extend不仅仅可以添加列表,也是可以添加其他的类型,字典或者元组、集合
In [30]: a
Out[30]: [1, 123142, 2, 3, 1, 3, 1111]
In [31]: a.extend(b)
In [32]: a
Out[32]: [1, 123142, 2, 3, 1, 3, 1111, 'a', 12, 3, 's', 'd']
In [33]: c = {"ad","asd","3erwx"}
In [34]: a.extend(c)
In [35]: a
Out[35]: [1, 123142, 2, 3, 1, 3, 1111, 'a', 12, 3, 's', 'd', 'asd', 'ad', '3erwx']
In [37]: thislist = ["apple", "banana", "cherry"]
...: thislist.remove("banana")
...: print(thislist)
['apple', 'cherry']
In [38]: #该pop()方法删除指定的索引。
...: thislist = ["apple", "banana", "cherry"]
...: thislist.pop(1)
...: print(thislist)
['apple', 'cherry']
如果不指定索引,
pop()
默认是删除最后一项
In [44]: a
Out[44]: [1, 2, 3, 1, 3, 1111, 'a', 12, 3, 's', 'd', 'asd', 'ad', '3erwx']
In [45]: a.pop(1)
Out[45]: 2
In [46]: a
Out[46]: [1, 3, 1, 3, 1111, 'a', 12, 3, 's', 'd', 'asd', 'ad', '3erwx']
In [47]: a.pop
Out[47]: <function list.pop(index=-1, /)>
In [48]: a.pop()
Out[48]: '3erwx'
In [49]: a
Out[49]: [1, 3, 1, 3, 1111, 'a', 12, 3, 's', 'd', 'asd', 'ad']
In [50]: thislist = ["apple", "banana", "cherry"]
...: del thislist[0]
...: print(thislist)
['banana', 'cherry']
In [51]: thislist = ["apple", "banana", "cherry"]
...: del thislist
...: print(thislist)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Input In [51], in <cell line: 3>()
1 thislist = ["apple", "banana", "cherry"]
2 del thislist
----> 3 print(thislist)
NameError: name 'thislist' is not defined # 不存在 -- 被删除了
In [52]: thislist = ["apple", "banana", "cherry"]
...: thislist.clear()
...: print(thislist)
[]
In [56]: for s in a:
...: print(s)
...:
...:
1
3
1
3
1111
a
12
3
s
d
asd
ad
In [57]: for s in range(len(a)):
...: print(a[s])
...:
1
3
1
3
1111
a
12
3
s
d
asd
ad
您可以使用循环遍历列表项while
。
使用该len()
函数确定列表的长度,然后从 0 开始并通过引用它们的索引来循环遍历列表项。记住在每次迭代后将索引增加 1。
打印所有项目,使用while
循环遍历所有索引号
In [58]: thislist = ["apple", "banana", "cherry"]
...: i = 0
...: while i < len(thislist):
...: print(thislist[i])
...: i = i + 1
...:
apple
banana
cherry
怎么样用现有的列表更方便快速的新建一个列表,python提供了一个机制
In [59]: fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
...: newlist = []
...:
...: for x in fruits:
...: if "a" in x:
...: newlist.append(x)
...:
...: print(newlist)
['apple', 'banana', 'mango']
In [60]: fruits
Out[60]: ['apple', 'banana', 'cherry', 'kiwi', 'mango']
也可
In [81]: fruits
Out[81]: ['apple', 'banana', 'cherry', 'kiwi', 'mango']
In [82]: newlist = [x for x in fruits if "a" in x] # 新语法
In [83]: newlist
Out[83]: ['apple', 'banana', 'mango']
newlist = [expression for item in iterable if condition == True]
返回值是一个新列表,保持旧列表不变。
条件就像一个过滤器,只接受评估为 的 项目True
。
只接受不是“苹果”的物品:
newlist = [x for x in fruits if x != "apple"]
可以使用该range()
函数创建一个可迭代对象:
In [84]: newlist = [x for x in range(10)]
In [85]: newlist
Out[85]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
In [102]: newlist = [x for x in range(0,10,1)]
In [103]: newlist
Out[103]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
In [104]: newlist = [x for x in range(0,10,2)]
In [105]: newlist
Out[105]: [0, 2, 4, 6, 8]
只接受小于 5 的数字:
newlist = [x for x in range(10) if x < 5]
thislist = ["orange", "mango", "kiwi", "pineapple", "banana"]
thislist.sort()
print(thislist)
thislist = ["orange", "mango", "kiwi", "pineapple", "banana"]
thislist.sort(reverse = True)
print(thislist)
案例
In [110]: a = [x for x in range(10)]
In [111]: a # 降序
Out[111]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
In [112]: a.sort(reverse=True)
In [113]: a
Out[113]: [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
In [114]: a.sort() # 升序
In [115]: a
Out[115]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
除了顺序和逆序,还可以自定义排序
In [115]: a
Out[115]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
In [116]: def a(n):
...: return abs(n - 50)
...:
In [117]: a(1)
Out[117]: 49
In [118]: a(4)
Out[118]: 46
In [119]: a(4.12)
Out[119]: 45.88
In [120]: b = [x for x in range(10)]
In [121]: v
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Input In [121], in <cell line: 1>()
----> 1 v
NameError: name 'v' is not defined
In [122]: b
Out[122]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
In [123]: b.sort(key = a)
In [124]: b
Out[124]: [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
thislist = ["banana", "Orange", "Kiwi", "cherry"]
thislist.sort()
print(thislist)
或许我们很容易想到使用
List_a = List_b
来排序,这个是不对的,列表是引用传递:在其它语言中我们知道,引用传递的时候,当我们修改List_b的值,List_a也会被修改。
有多种方法可以进行复制,一种方法是使用内置的 List 方法 copy()
。
thislist = ["apple", "banana", "cherry"]
mylist = thislist.copy()
print(mylist)
使用list
方法制作列表的副本list()
:
thislist = ["apple", "banana", "cherry"]
mylist = list(thislist)
print(mylist)
案例:
In [127]: a
Out[127]: [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
In [128]: a[1]=1
In [129]: a
Out[129]: [9, 1, 7, 6, 5, 4, 3, 2, 1, 0]
In [130]: b
Out[130]: [9, 1, 7, 6, 5, 4, 3, 2, 1, 0]
In [131]: c = a.copy()
In [132]: c
Out[132]: [9, 1, 7, 6, 5, 4, 3, 2, 1, 0]
In [133]: c[1]=13
In [134]: c
Out[134]: [9, 13, 7, 6, 5, 4, 3, 2, 1, 0]
In [135]: a
Out[135]: [9, 1, 7, 6, 5, 4, 3, 2, 1, 0]
在 Python 中有几种方法可以连接或连接两个或多个列表。
最简单的方法之一是使用+
运算符。
加入两个列表:
list1 = ["a", "b", "c"]
list2 = [1, 2, 3]
list3 = list1 + list2
print(list3)
连接两个列表的另一种方法是将 list2 中的所有项目逐个附加到 list1 中:
list1 = ["a", "b" , "c"]
list2 = [1, 2, 3]
for x in list2:
list1.append(x)
print(list1)
也可以使用该extend()
方法,其目的是将一个列表中的元素添加到另一个列表中:
In [144]: list1 = ["a", "b" , "c"]
...: list2 = [1, 2, 3]
...:
...: list1.extend(list2)
...: print(list1)
['a', 'b', 'c', 1, 2, 3]
-
✴️版权声明 © :本书所有内容遵循CC-BY-SA 3.0协议(署名-相同方式共享)©