我需要遍历所有元组,并将元组的第二项的值更改为第一个“/”后面的两个第一个字母(AA/BB/CC将变成AA)
为了名单
[[("AA","AA/BB/AA"),("QQ","AB/AA")],[("CC","CC/SS/AA"),("QQ","CC/CC")],...]
将返回以下内容:
[[("AA","AA"),("QQ","AB")],[("CC","CC"),("QQ","CC")],...]
我知道如何做循环和改变元组列表和元组回来。。。但是有没有一种方法可以用更短的方式来做呢?你知道吗
提前谢谢你的帮助!!你知道吗
Tags:
要对字符串进行单个替换,可以使用^{} 将字符串按斜杠拆分。
str.split
将返回它从字符串中提取的子字符串的列表。因为您只对第一个斜杠之前的子字符串感兴趣,所以只需要获取结果列表的第一个元素。您可以进一步使用maxsplit
参数来限制str.split
多次拆分字符串(使其更早地停止处理字符串)。你知道吗现在要在列表中执行替换,您有两个选择:要么就地替换列表,必要时更新每个元素,要么创建一个新列表,在其中动态应用转换。请注意,由于元组是不可变的,因此始终必须创建新元组。因为这通常是解决问题的首选方法,所以我只向您展示如何使用列表理解进行第二种方法。但是,如果您想在适当的位置替换这些元素,您只需在列表中循环并更新列表项。你知道吗
列表理解通常如下所示:
对于
sequence
中的每个元素x
,它会将转换t
应用于元素x
,并将其作为元素放入列表中。所以[x for x in lst]
将返回一个相同的列表t
将是identify函数。你知道吗元素
x
也可以是未打包的元组。如果源列表中的元素是两个元素元组,那么可以使用[t(a, b) for a, b in lst]
从元组中解压元素,应用转换并将其放入结果列表。你知道吗在您的例子中,我们要解压元组,这样就可以只处理第二个元素。但是我们也希望它是一个元组,所以我们再次将结果放入元组:
[(a, t(b)) for a, b in x]
。在本例中,转换t
将是我前面显示的分裂。你知道吗现在,因为您的列表实际上不是一个元组列表,而是一个元组列表,所以我们必须嵌套两个列表理解。类似于上面的
[[y for y in x] for x in lst]
将再现一个列表列表。现在,由于内部列表是元组列表,我们可以在那里对元组执行转换并将所有内容放在一起。你知道吗相关问题 更多 >
编程相关推荐