Как исправить это для loop over tuple function в Python?

Вот программа, в которой каждая строка была разбита на пары с использованием кортежей, так что каждый алфавит имел соответствующий номер A: 6, B: 6, C: 35 ..etc. Если значение меньше 10, тогда алфавиты были преобразованы к N. Ниже приведен код. Я обнаружил, что мой код не перекрывает функцию кортежа в последней части кода. Он принимает только одну последовательность и не пересекает другую

tutorial = open('c:/test/z.txt','r') ## Input file looks like >qrst ABCDE-- 6 6 35 25 10 >qqqq ABBDE-- 7 7 28 29 2 org = [] seqlist = [] seqstring = "" for line in tutorial: if line.startswith(">"): if seqstring!= "": seqlist.append(seqstring) seqstring = "" org.append(line.rstrip("\n")) else: seqstring += line.rstrip("\n") seqlist.append(seqstring) l = seqlist #print l j = [] ll = len(seqlist) for i in range(0,ll): sq = l[i] sequence = sq.split(" ")[0] ## Stores only the alphabets qualities = sq.split(" ")[1:] ## Stores only the numeric qualities = filter(None, qualities) for sub in sequence: if sub == "-": ## If sequences have "-", it inserts a "0" in that position in corresponding number idx = list(sequence).index(sub) qualities.insert(idx,"0") # Error in the steps below pairs = [] for sub in l: print sub new_list = [] for x in range(len(sequence)): print x new_tuple = (sequence[x], qualities[x]) #Printing this step, notice that only one of the sequences is printed twice. ERROR print new_tuple if int(qualities[x]) < 10: new_tuple = ("Z", qualities[x]) new_list.append(new_tuple) pairs.append(new_list) print pairs # When I print pairs it looks like this: [[('Z', '7'), ('Z', '7'), ('B', '28'), ('D', '29'), ('Z', '2'), ('Z', '0'), ('Z', '0')], [('Z', '7'), ('Z', '7'), ('B', '28'), ('D', '29'), ('Z', '2'), ('Z', '0'), ('Z', '0')]] # Sequence#2 is printed twice over. The first one is not taken in 

One Solution collect form web for “Как исправить это для loop over tuple function в Python?”

 all_inputs = [] # <---- add this for i in range(0,ll): sq = l[i] sequence = sq.split(" ")[0] ## Stores only the alphabets qualities = sq.split(" ")[1:] ## Stores only the numeric qualities = filter(None, qualities) for sub in sequence: if sub == "-": idx = list(sequence).index(sub) qualities.insert(idx,"0") # also add this *********************** all_inputs.append((sequence, qualities)) pairs = [] # change this ******************************* for sequence, qualities in all_inputs: print sub new_list = [] for x in range(len(sequence)): print x new_tuple = (sequence[x], qualities[x]) print new_tuple if int(qualities[x]) < 10: new_tuple = ("Z", qualities[x]) new_list.append(new_tuple) pairs.append(new_list) print pairs 

дает:

 [[('Z', '6'), ('Z', '6'), ('C', '35'), ('D', '25'), ('E', '10'), ('Z', '0'), ('Z', '0')], [('Z', '7'), ('Z', '7'), ('B ', '28'), ('D', '29'), ('Z', '2'), ('Z', '0'), ('Z', '0')]] 
  • питонный кортеж
  • Список питонов (str, int) словарей кортежей
  • python - может лямбда иметь более одного возврата
  • Python dict со значениями как кортежи для pandas DataFrame
  • Как работает str.startswith?
  • Список unhashable, но tuple hashable?
  • Что такое «названные кортежи» в Python?
  • Python: кортежи переменной длины
  • Python - лучший язык программирования в мире.