元组中的字符串和整数值

时间:2018-09-30 04:15:56

标签: python python-3.x

所以我在这里有此列表:

[('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)]

任何帮助都会很好,谢谢。 :)

4 个答案:

答案 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])))