如果有任何帮助,我正在使用spyder对此项目进行编码。
我试图接受用户输入:(a,a),(b,b),(c,c),(d,d)
并将元组存储到如下列表中:[('a','b'),('b','b'),...等
我尝试用逗号分割,但之后它会分组中间元组和错误。
我该怎么做呢?
答案 0 :(得分:1)
这是(我相信)你想要的。我只是在括号i.split('),(')
之间的逗号处拆分,然后删除现在不需要的括号并在剩余的逗号中拆分。 (抱歉,内联格式化可能很奇怪)。
这假设您的输入中没有空格。如果可能你必须去除那些。 i = i.replace(' ', '')
i = '(a,a),(b,b),(c,c),(d,d)' # i = input('Enter a list of tuples: ')
l = []
for tup in i.split('),('):
#tup looks like `(a,a` or `b,b`
tup = tup.replace(')','').replace('(','')
#tup looks like `a,a` or `b,b`
l.append(tuple(tup.split(',')))
print(l)
这会返回[('a', 'a'), ('b', 'b'), ('c', 'c'), ('d', 'd')]
答案 1 :(得分:1)
你可以通过步骤分解它。我保留了字符串,因为这是你提供的例子。但是如果你知道输入将是什么,你可以强制它在列表理解中是整数。
import re
input = '(a,a),(b,b),(c,c),(d,d)'
breakdown = re.findall('\(.*?,.*?\)', input)
tup_ls = []
for i in breakdown:
tup_ls.append(tuple([x for x in i[1:-1].split(',')]))
答案 2 :(得分:0)
t = list(tuple(map(int,input().split())) for r in range(int(input('enter no of rows : '))))
print(t)
输入:3
1 2
3 4
5 6
Output => [(1, 2), (3, 4), (5, 6)]
map
在某些情况下比列表理解要花费更少的时间和更少的内存。当我计算地图所花费的时间时,它比列表理解所花费的时间要少,因此省时。