所以我在这里有此列表:
[('CITS1001,95', 'CITS1401,100', 'CITS1402,97', 'CITS2002,99', 'CITS2211,94', 'CITS2401,95', 'CITS3001,93', 'CITS3002,93', 'CITS3003,91', 'CITS3200,87', 'CITS3401,98', 'CITS3402,93', 'CITS3403,88')]
您是如何做到的呢?
[('CITS1001,95'), ('CITS1401,100'), ('CITS1402,97'), ('CITS2002,99'), ('CITS2211,94'), ('CITS2401,95'), ('CITS3001,93'), ('CITS3002,93'), ('CITS3003,91'), ('CITS3200,87'), ('CITS3401,98'), ('CITS3402,93'), ('CITS3403,88')]
我认为您必须对其进行循环,但是我无法像上面那样将其括在括号中。
通常,如何正确地为上述输出元组。我遇到的问题是我相信的字符串值和整数值。
我不断得到
[('C'),('I'),('T')ETC ..,因为它们是字符串。
仅举一个例子。说我有清单[John, 20, Jeff 30]
如何将其输出到[('John', 20),('Jeff', 30)]
任何帮助都会很好,谢谢。 :)
答案 0 :(得分:1)
逗号是必需的。希望这可以帮到你!
mylist=['test,1','test,2','test,3']
mylist_tuple = [ (item,) for item in mylist]
### output : [('test,1',), ('test,2',), ('test,3',)]
答案 1 :(得分:0)
此解决方案是针对您的第一个问题的,
list_elmnts = [('CITS1001,95', 'CITS1401,100', 'CITS1402,97', 'CITS2002,99', 'CITS2211,94', 'CITS2401,95', 'CITS3001,93', 'CITS3002,93', 'CITS3003,91', 'CITS3200,87', 'CITS3401,98', 'CITS3402,93', 'CITS3403,88')]
procesd_list = []
for list_elmt in list_elmnts:
for tuple_elmnt in list_elmt:
tuple_elmnt_array = tuple_elmnt.split(',')
procesd_list.append((tuple_elmnt_array[0], tuple_elmnt_array[1]))
据我所知,您不能按照问题中的要求保留单个元素元组
答案 2 :(得分:0)
尝试一下:导入ast将无法使用文字识别这种语法。
import re
sl="""[('CITS1001,95', 'CITS1401,100', 'CITS1402,97', 'CITS2002,99',
'CITS2211,94', 'CITS2401,95', 'CITS3001,93', 'CITS3002,93',
'CITS3003,91',
'CITS3200,87', 'CITS3401,98', 'CITS3402,93', 'CITS3403,88')]"""
sl=re.sub('\(', '', sl)
sl=re.sub('\)', '', sl)
sl=str(sl)
# Then import ast to convert it back to a literal
import ast
sl = ast.literal_eval(sl)
for nm in sl:
#print('\n')
print(nm)
答案 3 :(得分:0)
您的问题是针对不相同的示例表达的,示例2的列表格式是两种格式的混合,我假设应该基于示例1的格式['John,20', 'Jeff,30']
示例1展示:
l = [(j,) for i in l for j in i]
[('CITS1001,95',), ('CITS1401,100',), ('CITS1402,97',), ('CITS2002,99',), ('CITS2211,94',), ('CITS2401,95',), ('CITS3001,93',), ('CITS3002,93',), ('CITS3003,91',), ('CITS3200,87',), ('CITS3401,98',), ('CITS3402,93',), ('CITS3403,88',)]
注意:例如,预期输出不是我想的意思,我认为这是最佳选择
l = [(j.split(',')[0], int(j.split(',')[1])) for i in l for j in i]
[('CITS1001', 95), ('CITS1401', 100), ('CITS1402', 97), ('CITS2002', 99), ('CITS2211', 94), ('CITS2401', 95), ('CITS3001', 93), ('CITS3002', 93), ('CITS3003', 91), ('CITS3200', 87), ('CITS3401', 98), ('CITS3402', 93), ('CITS3403', 88)]
示例2解决方案:
l = [(i.split(',')[0], int(i.split(',')[1])) for i in l]
[('John', 20), ('Jeff', 30)]
扩展循环模型:
new_l = []
for i in l:
new_l.append((i.split(',')[0], int(i.split(',')[1])))