python - 以特定顺序解压列表列表中的元组

标签 python python-3.x list tuples

我有一长串 list 。每个列表中的第一项是一个包含四个字符串的元组。有些列表有第二个项目,它是一个字符串:

list_one = [('string1', 'number', 'Longstring1', 'long_string2'), 'long_string3']
list_two = [('string5', 'number1', 'Longstring4', 'long_string5')]  

我想循环每个列表,以便数字字符串最好在列表开头转换为整数,而元组中的其余项目是它们自己的列表项目。如果无法将数字字符串转换为整数,只要它们位于列表中的第一个位置就可以。所以它可能看起来像这样:

new_list_one = [number, 'string1', 'Longstring1', 'long_string2', 'long_string3']
new_list_two = [number, 'string5', 'Longstring4', 'long_string5']  

如何按照特定顺序解包元组?对我来说使用以数字为键的字典是最简单的吗?到目前为止,我的主要问题是区分最终字符串位于元组之外的列表的过程。

最佳答案

list_one = [('string1', '100', 'Longstring1', 'long_string2'), 'long_string3']
list_two = [('string5', '200', 'Longstring4', 'long_string5')] 

您可以解压元组,切换第一个和第二个元素,并尝试转换为 int

def int_if_possible(val):
    try:
        return int(val)
    except ValueError:
        return val

def unpack(l):
    ret = [*l[0], *l[1:]]
    ret[0], ret[1] = int_if_possible(ret[1]), ret[0]
    return ret

print(unpack(list_one))
# [100, 'string1', 'Longstring1', 'long_string2', 'long_string3']
print(unpack(list_two))
# [200, 'string5', 'Longstring4', 'long_string5']

关于python - 以特定顺序解压列表列表中的元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50929995/

相关文章:

python - Python 中的颜色编码数字类似于 Excel 条件格式

python - 按元组分隔符拆分列表

python - 如何使用 pybind11 .so 链接所有 PyTorch?

python - os.listdir() 给出的列表比预期的要大

python : check if the nested dictionary exist

python - Skimage 多边形函数 : Why does the last vertice repeats in the polygon documentation example?

list - TCL - 将字符串按任意数量的空格拆分为列表

python - 模式 1 的 PIL 图像

list - 在String Dart列表中查找重复的值

python - 根据您自己在 python 中的值对字符串进行排序