Python 3.x 将包含整数和字符串的列表转换为嵌套元组,Python
我希望将字符串转换为嵌套元组,例如:Python 3.x 将包含整数和字符串的列表转换为嵌套元组,Python,python-3.x,tuples,Python 3.x,Tuples,我希望将字符串转换为嵌套元组,例如: string = 'Jane A 3 B- 3 F 1#Bob C+ 2 D+ 3#Chris C 4 C 3 C- 2' 如您所见,字符串不正常,带有#符号和空格代替逗号。#符号表示名称的数量,我必须计算每个名称后面的数据。因此,我使用string.split('#')创建了3个单独的字符串,从中,我使用了for循环在第一次迭代中得到了这个结果: ['A', 3, 'B-', 3, 'F', 1] 列表中缺少“Jane”的原因是,我只需要获取值,不管是
string = 'Jane A 3 B- 3 F 1#Bob C+ 2 D+ 3#Chris C 4 C 3 C- 2'
如您所见,字符串不正常,带有#符号和空格代替逗号。#符号表示名称的数量,我必须计算每个名称后面的数据。因此,我使用string.split('#')
创建了3个单独的字符串,从中,我使用了for循环在第一次迭代中得到了这个结果:
['A', 3, 'B-', 3, 'F', 1]
列表中缺少“Jane”的原因是,我只需要获取值,不管是字符串还是整数,然后将它们生成嵌套的元组。因此,我希望将此列表转换为嵌套元组,如下所示:
[('A', 3), ('B-', 3), ('F', 1)]
我将非常感谢任何帮助或建议 我不知道是否有更好的方法,但我们走吧:
input = ['A', 3, 'B-', 3, 'F', 1]
l1 = input[::2] # get even
l2 = input[1::2] # get odd
tuples = list(zip(l1,l2)) # zip them together
# yes it could be wrote `tuples = list(zip(input[::2],input[1::2]))`
print (tuples)
输出
[('A', 3), ('B-', 3), ('F', 1)]
使用
逐步解释
A
/B
/C
/D
/-
的意思是什么?)存储在不同的容器中:
string.split('#')
[A-Z][+-]? \d+
可以这样读
任何大写拉丁字母(可选后跟+
或-
符号)和后跟数字的空白
并将其和学生的子字符串传递给re.findall
函数。之后,我们将有如下内容:
>>> [re.findall(r'[A-Z][+-]? \d', student_data) for student_data in string.split('#')]
[['A 3', 'B- 3', 'F 1'], ['C+ 2', 'D+ 3'], ['C 4', 'C 3', 'C- 2']]
str.split
方法将带有+
/-
的字母从数字中分离出来,并迭代将第二个坐标转换为int
A/B/C/D
和+
/-
是什么意思?后面是一个数字?是的+/-符号是字母分数,我需要写一个函数,它接受一个奇怪的字符串,并确定列表中是否有学生进入院长名单。到目前为止,我有大约64行代码,函数之间有适当的间距,但它不起作用。我的意思是,我使用一个helper函数来确定他们的gpa,它以一个元组作为参数。当我手动输入字符串中的元组时,它给出了正确的答案,但是当我尝试在程序中返回包含字符串函数的元组时,我得到了一个错误。如果您看到我的代码,我想您会理解我的意思。我知道我应该做什么,但我认为我遗漏了一些非常琐碎的事情。如果你能帮我的话,我会非常感激。我之前有一个任务,我必须编写一个函数,它包含一个元组列表,并使用字典来确定总体gpa。我目前正在做的这个作业是写一个函数,调用上一个函数,看看学生是否进入院长名单。我只是想我可以把参数转换成一个元组列表,helper函数接受这些元组,它将返回正确的值,但它不起作用,而且越来越令人沮丧。@SeungsooIm:你的代码在哪里?
>>> [re.findall(r'[A-Z][+-]? \d', student_data) for student_data in string.split('#')]
[['A 3', 'B- 3', 'F 1'], ['C+ 2', 'D+ 3'], ['C 4', 'C 3', 'C- 2']]