python的list中包含tuple,如何修改tuple中的元素?

Python012

python的list中包含tuple,如何修改tuple中的元素?,第1张

tuple是不变的。应当是生成新的tuple项添加了待输出的列表中。

根据规则,分别得到两个List[Tuple],然后合并即可

A = [...]

B = [...]

def b_in_a(b: tuple) ->bool:

....""""判断b子项是否能与A中某项对应"""

....for a in  A:

........if a[0]==b[0] and  a[1].startswith(b[1]):

............return True

....return False

def gen_item(a: tuple) ->tuple:

...."""生成输出项"""

....for b in  B:

........if b_in_a:

............return b + (1,)

....return a[:2] + (0,)

def get_excess() ->list:

...."""得到B中不能与A对应的所有项"""

....return list(map(lambda _: _ + (0,),filter(lambda _: !b_in_a(_),B)))

lst_out = list(map(gen_item, A)) + get_excess()

print(lst_out)

"""

使用global子句。在stisfiesF函数中,声明L为一个全局变量,如此

你在该函数中修改L的值,则会体现到函数之外。这种写法违背Python

优雅的原则,不推荐使用,仅供学习.【L中的元素不能有数字,否则

报错,我也不知什么原因】

"""

def f(s):

    return 'av' in s

# 在声明L为全局变量之前定义,代码更直观

L = ['av1', 'av', 'a','b','ac','love','python',('f','av','gh'),[1,2,3]]

# 此处函数不传入参数L

def satisfiesF():

    # 声明L为全局变量

    global L

    x = []

    for i in L:

        if f(i):     

            x.append(i)

        else:

             pass

    L = x

    return len(L)

print ('新列表L的长度为%s'%satisfiesF())

print ('将原列表修改为元素含有"av"的新列表L:')

print(L)

"""

结果:新列表L的长度为3

将原列表修改为元素含有"av"的新列表L:

['av1', 'av', ('f', 'av', 'gh')]

>>> 

"""

一、list

list是python内置的有序的列表,可以随时添加和删除其中的元素

1、 定义

list_name = ["param1","param2","param3"]

2、访问

1)用索引来访问,索引从0开始

索引不可以越界,否则会报错,最后一个元素的索引是len(city) - 1

2)还可以从后开始访问 最后一个元素的索引为-1 依次类推,第一个元素的索引为-len(city)

>>>city[-1]

>>>'广州'

3、元素的追加

4、元素的插入

在city的索引1处增加 重庆

>>>city.insert(1,'重庆')

>>>city

>>>['北京', '重庆', '上海', '广州', '南京']

5、元素的删除

1)删除末尾

2)删除指定位置元素 pop(i),i为索引值

6、元素的替换

7、二维list

访问的时候 我们就可以直接 city[1][0] city[1][1]来访问 其中的元素值

二、tuple(元组)

tupe和list的最大的区别就是 tuple一旦被创建 就无法修改

1、定义

2、访问

和list是一样的 country[0],country[1]。由于tuple是不可变的,所以没有append 和insert 函数

3、 一个元素的tuple

我们发现 当tuple的元素只有一个元素的时候,python会认为括号就是小括号的功能,就会按照整数或者字符串解析,为了解决这个问题,python规定这种情况 在后面加一个逗号','就可以

4、 tuple的指向不变

你会惊讶,怎么可以变了呢??

其实在python内部,c[0],c[1]指向 1 和 2,而c[2]是指向的一个list对象,其实变的不是tuple的元素,而是list的元素。tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变.