python怎么让列表最后两个用和连接

Python010

python怎么让列表最后两个用和连接,第1张

python列表连接列表

In this tutorial, we will unveil different methods to concatenate lists in Python. Python Lists serve the purpose of storing homogeneous elements and perform manipulations on the same.

在本教程中,我们将揭示在Python中串联列表的不同方法。 Python列表用于存储同类元素并对其进行操作。

In general, Concatenation is the process of joining the elements of a particular data-structure in an end-to-end manner.

通常,串联是指以端到端的方式连接特定数据结构的元素的过程。

The following are the 6 ways to concatenate lists in Python.

以下是在Python中串联列表的6种方法。

concatenation (+) operator

串联(+)运算符

Naive Method

天真的方法

List Comprehension

清单理解

extend() method

extend()方法

‘*’ operator

'*'运算符

itertools.chain() method

itertools.chain()方法

join函数python就是把一个list中所有的串按照你定义的分隔符连接起来。

join是string类型的一个函数,用调用他的字符串去连接参数里的列表,python里面万物皆对象,调用join函数,将后面的列表里的值用逗号连接成新的字符串。str(i)foriinlist这是一个映射,就是把list中每个值都转换成字符串。

含义

python中得thread的一些机制和C/C++不同:在C/C++中,主线程结束后,其子线程会默认被主线程kill掉。而在python中,主线程结束后,会默认等待子线程结束后,主线程才退出。

python对于thread的管理中有两个函数:join和setDaemon。

join:如在一个线程B中调用threada。join(),则threada结束后,线程B才会接着threada。join()往后运行。

setDaemon:主线程A启动了子线程B,调用b。setDaemaon(True),则主线程结束时,会把子线程B也杀死,与C/C++中得默认效果是一样的。

在前面,我们要保存一个数据,需要先定义一个变量,而且一个变量中只能保存一个数据。譬如,语句:a1=1,值“1”就被保存了,但要保存“2”,就还需要再定义一个变量:a2=2......这样以来,随着数据的增多,岂不是要定义更多的变量吗?

可以使用一个新的数据类型,它记录很多数据,并且将它们按照顺序存储在连续的内存空间中,这便是序列。Python中有5种常用的序列结构,分别是列表、元组、集合、字典和字符串。

9.1列表

语法格式:

listname=[element1,element2,element3,......,elementn]

其中,listname为列表名,element1,element2,element3,......,elementn表示列表中的元素。各个元素的数据类型可以相同,也可以不同,但通常元素的类型都是相同的,含义也是相同的。

如:

list1=[‘风’,’马‘,’牛’,1,2,3,’a’,’b’,’c’]就没有太多的实际用途。

list2=['张三','男',18,'13901001000']虽然元素的类型不同,但表示了同一个人的信息。

1、访问列表元素

列表中元素的索引号从0开始标记,访问列表元素时,可以直接按照索引号读取。

如:

list2=['张三','男',18,'13901001000']

print(list2[1]) #输出列表中索引号为1的元素

输出结果:男

和字符串一样,序列都是可以使用切片操作的。

如:

print(list2[:2])

输出结果:['张三', '男']

print(list2[2:])

输出结果:[18, '13901001000']

2、使用range()函数创建数值列表

格式:range(start, stop [,step]) ;start 指的是计数起始值,默认是 0;stop 指的是计数结束值,但不包括 stop ;step 是步长,默认为 1,不可以为 0 。range() 方法生成一段左闭右开的整数范围。

可以使用range()函数创建数值列表,如:

list1=list(range(10,20,2))

print(list1)

运行结果:[10, 12, 14, 16, 18]

3、删除列表

语法格式如下:

del listname

其中,listname为要删除列表的名称。

删除列表与删除变量的方法是完全一样的,前面已经介绍过了。

4、遍历列表

常用的遍历列表的方法有是利用for语句,举例如下:

list1=list(range(10))

for item in list1:

print(item,end=' ') # end=’ ‘表示以空格结束,如果不写这个参数,相当于默认值end=’ ’

输出结果:0 1 2 3 4 5 6 7 8 9

为了获取列表元素的索引值,就需要使用enumerate()函数。

list1=list(range(10,20,2))

for index,item in enumerate(list1):

print(index,'-',item,end=' ')

输出结果:0 - 10 1 - 12 2 - 14 3 - 16 4 - 18

5、追加、修改和删除列表元素

追加元素

>>>list1=['春','夏','秋']

>>>list1.append('冬')

>>>list1

['春', '夏', '秋', '冬']

还有一种方法,就是使用“+”号将两个序列连接起来。如:

list1=['春','夏','秋']

list1=list1+['冬']

print(list1)

输出结果为:['春', '夏', '秋', '冬']

注意,下面的做法是错误的:

>>>list1=['春','夏','秋']

>>>list1=list1+'冬'

Traceback (most recent call last):

File " ", line 1, in

list1=list1+'冬'

TypeError: can only concatenate list (not "str") to list

从这个提示可知,列表只能与列表连接,而不能与字符串连接。

修改元素

>>>list1[2]='autumn' #通过索引对元素直接赋值

>>>print(list1)

['春', '夏', 'autumn', '冬']

删除元素

>>>del list1[2] #通过索引直接删除元素

>>>print(list1)

['春', '夏', '冬']

6、列表元素排序

在讨论列表元素排序时,为了将有序列表变成无序列表,这里用到了shuffle()函数,但它不是Python的内置函数,需要先使用import语句将random模块包含进来,这样才能像使用内置函数那样使用扩展模块中的函数。

>>>import random #导入random模块

>>>list1=list(range(10)) #生成列表,元素为0到9的整数。

>>>list1

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>>random.shuffle(list1) #用random包中的shuffle()函数将list1中元素次序打乱

>>>list1

[8, 6, 3, 5, 0, 7, 1, 9, 2, 4]

>>>list1.sort() #对list1升序排列

>>>list1

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>>random.shuffle(list1) #将list1顺序重新打乱

>>>list1

[5, 9, 7, 8, 4, 3, 2, 0, 6, 1]

>>>list1.sort(reverse=True) #对list1降序排列

>>>list1

[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

方法sort()的语法格式:

listname.sort(key=None,reverse=False)

其中,listname表示要排序的列表;key表示指定一个键,如”key=str.lower”表示排序时不区分字母大小写;reverse为True表示降序排列(为默认值,可省缺),为False表示升序排列。

还有一个函数sorted(),功能与方法sort()相似。格式如下:

sorted(listname,key=None,reverse=False)

7、 利用列表推导式快速生成一个列表

例1:生成指定范围的数值列表。

>>>import random

>>>list1=[random.randint(0,20) for i in range(10)]

>>>list1

[16, 20, 19, 6, 5, 7, 10, 5, 12, 5] #生成了包含10个值在0到20之间的元素构成的列表。

例2:根据现有列表生成新的列表。

>>>radius=list(range(1,6)) #生成列表 radius保存半径的值

>>>radius

[1, 2, 3, 4, 5]

>>>s=[round(2*3.14*r,2) for r in radius]

#生成列表s,将计算得到的周长值保存起来,其中round()可以保留指定小数位,格式 round(var, n),var为变量名,n为指定保留小数位。

>>>s

[6.28, 12.56, 18.84, 25.12, 31.4]

例3:从列表中选择符合条件的元素组成新的列表。

>>>score=[98,65,77,56,82,89] #列表score用来存储成绩

>>>good=[x for x in score if x>=80]

#从列表score中选取>=80的元素存入新列表good中

>>>good

[98, 82, 89]

count()、index()和sum()方法

count()方法

用于统计指定元素在列表中出现的次数。

例:

>>>list1=['a','b','c','d','e','f','c','d','e','a','b','c','d']

>>>num=list1.count('c') #统计列表list1中'c'的个数

>>>num

3

index()方法

用于获取指定元素在列表中第一次出现的索引值。

>>>list1=['a','b','c','d','e','f','c','d','e','a','b','c','d']

>>>position=list1.index('c')

>>>position

2

sum()方法

用于计算数值列表中全部或指定元素的和。

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

>>>total=sum(list1) #计算列表list1中全部元素的和

>>>total

15

>>>total=sum(list1,1) #在列表list1全部元素的和后,在加上参数(“1”)的值

>>>total

16

>>>total=sum(list1[:2]) #计算切片list1[:2]中各元素的和

>>>total

3

二维列表

格式:listname[下标1][下标2]

其中,listname表示列表的名称,下标1表示列表中的行号,下标2表示列表中的列号。对于n行m列的二维列表,第一个元素的行号和列号都是0,最后一个元素的行号和列号都是n-1。如下所示:

list[0][0] list[0][1] list[0][2] ............ list[0][m-1]

list[1][0] list[1][1] list[1][2] ............ list[1][m-1]

......

......

list[n-1][0] list[n-1][1] list[n-1][2] ............ list[n-1][m-1]

通俗地讲,如果一个列表中的元素本身就是一个列表,则这个列表就是一个二维列表。

如:

>>>list1=['a1','b1','c1','d1']

>>>list2=['a2','b2','c2','d2']

>>>list3=['a3','b3','c3','d3']

>>>listtwo=[list1,list2,list3]

>>>listtwo

[['a1', 'b1', 'c1', 'd1'], ['a2', 'b2', 'c2', 'd2'], ['a3', 'b3', 'c3', 'd3']]

如果要查看二维列表listtwo按照行、列的排列,可以运行如下代码:

for i in range(3):

for j in range(4):

print(listtwo[i][j],end=' ')

print()

运行结果:

a1 b1 c1 d1

a2 b2 c2 d2

a3 b3 c3 d3

如果要读取二维列表中的某一行,可以使用如下方法:

>>>listtwo[2] #读取第3行的元素(注意索引号都是从0开始的)

['a3', 'b3', 'c3', 'd3']

如果要读取某一个元素的值,可以使用如下方法:

>>>listtwo[2][2] #读取第3行第3列的元素

'c3'