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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python的list中包含tuple,如何修改tuple中的元素?相关的知识,希望对你有一定的参考价值。

输入:输入两组list,例如:A = [(1, 'a00', 1), (2, 'b', 0), (3, 'c', 1)], B = [(1, 'a'), (4, 'd')]
输出:将两组list按规则合并输出,例如:[(1, 'a', 1), (2, 'b', 0), (3, 'c', 1), (4, 'd', 0)]
规则:A中有B中tuple对应项的(B中(1, 'a'),对应A中(1, 'a00', 1)),将A中对应的tuple中第二项改为B中的第二项(将A中(1, 'a00', 1)中的'a00'改为'a',即(1, 'a', 1)),A中无B中tuple对应项的,新增到A中,末位补0(B中(4, 'd')在A中无对应项,新增到A中,末位补0,即(4, 'd', 0))
ps:输入方式不固定,主要规则部分实现

参考技术A

    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)

C# 如何判断 List<T> 中包含某个属性的对象? 就是说,List<Person> 中如何判

C# 如何判断 List<T> 中包含某个属性的对象? 就是说,List<Person> 中如何判断是否包含年龄为 xx 的对象???(其中,年龄是Person的一个属性)

list的find方法 如:

Person per = list.Find(delegate(Person p) return p.age == 20; )//只返回第一个匹配

List<Person> plist = list.FindAll(delegate(Person p) return p.age == 20; )//返回所有匹配

追问

它返回的是bool值?像Contains一样?

追答

你不是person对象吗,第一个返回对象,第二个返回list集合

参考技术A bool b= lst.Any(p=>p.Age==xx)//using System.Linq;

参考技术B 把LIST<T>转为IEnumerable<T>接口数据
使用IEnumerable<T>扩展方法where(entity=entity.age==20);需要3.5版本支持

以上是关于python的list中包含tuple,如何修改tuple中的元素?的主要内容,如果未能解决你的问题,请参考以下文章

C# 如何判断 List<T> 中包含某个属性的对象? 就是说,List<Person> 中如何判

Python之“可变”的tuple

python基础之--元组(tuple),python小白必看!

Python之“可变”的tuple

Python顺序集合之 tuple

如何监视 ObservableList JavaFX 中包含的对象的更改