从List条目中选择x(f.e。first)字符,然后从新列表中选择随机条目

时间:2016-06-01 01:55:18

标签: python list

我有一个字符串列表,我想从每个字符串中选择一个特定数量的字符(列表条目)。我发现了一些切片字符串,但我不知道如何使它与列表一起使用。我也不知道这是否适合这种方法。 例: 我有一个清单

['abcd12', 'efgh34', 'ijkl56', 'mnop78']

我想提取每个字符串('ab', 'ef', 'ij', 'mn')的前两个字符并将它们放在另一个列表中。 任何帮助表示赞赏。

编辑: 它现在有效但我在切片前打印列表时遇到问题。这是完整的代码(随机部分似乎也不起作用):

#!/usr/bin/env python3.4
# -*- coding: utf-8 -*-

import random

def generateSequences (n):

    L = []
    dna = ["A","G","C","T"]
    for i in range(int(n)):

        random_sequence=''

        for i in range(10):
            random_sequence+=random.choice(dna)

        L.append(random_sequence)

    print(L)
    return L

def generatePrefixes (p, L):

    S = [x[:20] for x in L]
    D = []
    for i in range(p):
        randomPrefix = random.choice(S)
        D.append(randomPrefix)

    return S, D

if __name__ == "__main__":
    generateSequences(15)
    print (L)
    generatePrefixes(4)
    print (S)
    print (D)

它打印S很好,但告诉我L没有定义。奇怪的是,它显示S还是未定义但它仍然有效。 此外,我似乎无法得到我选择随机条目工作的部分。 D根本没有出现。

1 个答案:

答案 0 :(得分:2)

您可以将list comprehension与字符串切片结合使用,您可以获得以下内容:

SparkbookPro:jni admin$ ndk-build
[armeabi-v7a] Install        : libSDL2.so => libs/armeabi-v7a/libSDL2.so
[armeabi-v7a] Compile arm    : main <= SDL_android_main.c
[armeabi-v7a] Compile++ arm  : main <= Android_Utils.cpp
/work/TT/Android_Utils.cpp: In function 'void Test1237()':
/work/TT/Android_Utils.cpp:12:39: error: 'opendir' was not declared in this scope

更新:要回答第二个问题,您需要存储函数的返回值,并将它们作为参数传递到所需的任何位置:

>>> l = ['abcd12', 'efgh34', 'ijkl56', 'mnop78']
>>> [x[:2] for x in l]
['ab', 'ef', 'ij', 'mn']