2016-10-31 10 views
1

対応する位置の各リストの3つの要素がリストになるように、sp_list1を読み込む必要があります。次の3つ(重複しない)は、リストのリストを作成するように別々のリストに入れられます。Pythonの元のリストから位置特定の要素を使ってリストのリストを作る方法は?

Input: seq_list1 = ['ATGCTATCATTA','ATGCTATCATTA','ATGCTATCATTT'] 

所望の出力

seq_list_list1 =[['ATG','ATG','ATG'],['CTA','CTA','CTA'],['TCA','TCA','TCA'],['TTA','TTA','TTT']] 

私は、これはリストの内包表記のようなものを使ってなんとかする必要があります感じているが、私は特に、(それを把握することができない、私はどのように把握することはできませんリストの理解を使用するときに重複しない3つの連続したインデックスを選択するようにアイテムのインデックスにアクセスする)。

+0

あなたは 'append'が引数を取ることに気付かなければなりません。なぜあなたは1つを提供していないのですか? – TigerhawkT3

+0

それは私が確信していた1つの部分でした。私は編集をしたように空リストを置くだけですか? – Biotechgeek

+0

あなたが実際にしようとしているコードは、試みたものと根本的に異なっています(上記の理由で、エラーなく実行されません)。それはもちろん実行可能ですが、SOはコーディングサービスではありません。あなたはもっと学び、別の試みをしなければなりません。 – TigerhawkT3

答えて

0

ここでこのコードを使用することができます。希望に応じてこのコードを使用できます。

seq_list1 = ['ATGCTATCATTA','ATGCTATCATTA','ATGCTATCATTT'] 
n=3 

seq_list1_empty=[] 
counter = 0 

for k in range(len(seq_list1)+1): 
    for j in seq_list1: 
     seq_list1_empty.append([j[i:i+n] for i in range(0, len(j), n)][counter])# this will reassemble the string as an index 
    counter+=1 

counter1=0 
counter2=3 
final_dic=[] 
for i in range(4): 
    final_dic.append(seq_list1_empty[counter1:counter2])#you access the first index and the third index here 
    counter1+=3 
    counter2+=3 
print final_dic 

出力はこれを試してみてください

[['ATG', 'ATG', 'ATG'], ['CTA', 'CTA', 'CTA'], ['TCA', 'TCA', 'TCA'], ['TTA', 'TTA', 'TTT']] 
+0

1)あなたは彼らのために誰かの仕事をしています、そして、SOはコーディングサービスではありません。 2)___出力が正しくない.___ – TigerhawkT3

+0

私はここで助けようとしています。私はまだ出力をチェックしています。PRO:D –

+0

編集後、あなたはまだ説明がなく(OPや将来の訪問者には役に立たない)誰かの仕事をしていますが、それでも間違いです。 – TigerhawkT3

0
seq_list1 = ['ATGCTATCATTA','ATGCTATCATTA','ATGCTATCATTT'] 


def new_string(string, cut): 
    string_list = list(string) # turn string into list 

    # create new list by appending characters from from index specified by 
    # cut variable 
    new_string_list = [string_list[i] for i in range(cut, len(string_list))] 

    # join list characters into a string again 
    new_string = "".join(new_string_list) 

    # return new string 
    return new_string 


new_sequence = [] # new main sequence 

# first for loop is for getting the 3 sets of numbers 
for i in range(4): 
    sub_seq = [] # contains sub sequence 

    # second for loop ensures all three sets have there sub_sets added to the 
    #sub sequence 
    for set in range(3): 
     new_set = seq_list1[set][0:3] #create new_set 
     sub_seq.append(new_set) # append new_set into sub_sequence 


    #checks if sub_seq has three sub_sets withing it, if so 
    if len(sub_seq) == 3: 
     #the first three sub_sets in seq_list1 sets are removed 
     for i in range(3): 
      # new_string function removes parts of strings and returns a new 
      # string look at function above 

      new_set = new_string(seq_list1[i], 3) # sub_set removed 
      seq_list1[i] = new_set # new set assigned to seq_list1 

    # new_sub sequence is added to new_sequence 
    new_sequence.append(sub_seq) 

    #sub_seq is errased for next sub_sequence 
    sub_seq = [] 


print(new_sequence) 

です:私はそれが役に立てば幸い。理解が難しい場合は申し訳ありませんが、ドキュメンテーションにあまり堪能ではありません。

関連する問題