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:输入方式不固定,主要规则部分实现
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> 中如何判