我有一个字符串列表,我想从每个字符串中选择一个特定数量的字符(列表条目)。我发现了一些切片字符串,但我不知道如何使它与列表一起使用。我也不知道这是否适合这种方法。 例: 我有一个清单
['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根本没有出现。
答案 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']