三门语言同时学习的快乐谁懂?
———– dly
概念
一系列的按特定顺序排列的元素组成;内置的可变序列;使用[]定义,元素之间用逗号隔开;其中的元素可以是
任意数据类型。
对比c\c++中的数组,我们知道有整型数组,字符串数组和指针类型的数组,他们其中的类型必须是相同的,而python允许不同数据类型在同一个列表中。
创建与删除
–使用[]直接创建:
–使用内置方法list()创建:
–del+列表名称
输出与性质
1.列表的输出是带着[]的。
2.列表与序列类似,可以进行*输出,也可以两个列表相加成一个列表进行输出。同样max,min,.count()等操作可以使用。
3.注意使用内置list创建列表时内容可以是range函数而使用[]创建法则不可以(*错误1)。而且使用[]创建时里面的元素可以是很多个,而list创建时
只能有一个。
什么意思呢list的特点是可以将其他的数据类型转化为列表,但不能将列表转化为列表,就是说不能把[]定义的列表变成用list定义的列表(*例子1)。
列表的遍历输出
前两种比较简单直接上代码:
# 第一种简单使用循环遍历
a = ['hello', 'c++', 'java']
for i in a:
print(i)
# 第二种结合range函数和len函数,根据索引遍历
for i in range(len(a)):
print(a[i])
第三种是使用循环与enumerate()函数组合,enumerate()函数的作用是对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值。可以看出如果我们要输出序号和元素内容时,使用该函数是最方便的,而且序号是可以改变的。
# 序号默认情况下
a = ['hello', 'c++', 'java']
for index, item in enumerate(a):
print(index, item)
# 序号重新定义,可从任意数开始
for index, item in enumerate(a , 1):
print(index, item)
输出结果:
0 hello
1 c++
2 java
-------------------------------------------------------------------------------------------
1 hello
2 c++
3 java
列表的相关操作
内容的操作
先列个大纲:
解释几个最常用的,首先是append()操作。我们可以直接最后添加一个元素,也可以在规定位置添加,被添加位置的元素往后顺延:
a = ['hello', 'c++', 'java']
a.append('python')#直接添加
print(a)
a.insert(1,'c')#指定位置添加
print(a)
输出结果:
['hello', 'c++', 'java', 'python']
['hello', 'c', 'c++', 'java', 'python']
排序
排序方法与c/c++相同,若为数字则直接根据大小排序;若为字符串则根据ASCII码进行排序。
–列表对象的sort()方法。解释变量:如果reverse的bool值为False(或者不写),则进行升序排序;为True则为降序排序。
–列表内置sorted()函数,此方法将产生一个新的列表对象,原列表顺序不变。既然产生新的,则必然需要一个新的变量来接收,所以基本格式为:
new_lis = sorted(old_lis)
同时也可以忽略大小写对字符串进行排序。
new_lis = sorted(old_lis ,key = str.lower)
列表生成式/推导式
–生成指定范围内的数值列表。注意,for循环前面的是表达式,既然是式子,它可以是一个变量,也可以是一个
函数生成式。
解释一下item就是一个变量,可以取到range里面的值,亦可以依靠range产生数的数量控制你需要数的数量,例如下面b中取随机数。
import random
a = [item for item in range(1, 11)]
print(a)
b = [random.randint(1, 100) for _ in range(10)]
print(b)
c = [item*item for item in range(1, 11)]
print(c)
输出结果:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[13, 81, 48, 10, 61, 87, 7, 82, 68, 27]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
–从列表中选择符合条件的元素组成新的列表
# 取得数列中的偶数
a = [item for item in range(1, 11) if item % 2 == 0]
print(a)
*二维列表
二维列表的创建方式,既然要分别输出,那就需要两个循环:
a = [
['姓名', '成绩', '排名'],
['张三', '100', '1'],
['李四', '98', '2'],
]
# 直接输出
print(a)
# 按照先行后列输出
for row in a:
for item in row:
print(item, end='\t')
print()
输出结果: