我有一长串 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/