如何在Python 3中将字符串列表转换为单独的字符串?

时间:2017-02-05 00:04:23

标签: python string list python-3.x

我想知道你是否有一个字符串列表,如:

l = ['ACGAAAG', 'CAGAAGC', 'ACCTGTT']

如何将其转换为:

O = 'ACGAAAG'
P = 'CAGAAGC'
Q = 'ACCTGTT'

你能不知道列表中的项目数量吗?您必须将它们存储为变量。 (变量无关紧要。)

4 个答案:

答案 0 :(得分:2)

欢迎来到SE!

结构已知

如果您知道字符串的结构,那么您可以简单地解压缩它:

O, P, Q = my_list

结构未知

使用for循环解压缩列表。对循环内的每个字符串进行处理。对于下面,我只是打印每一个:

for element in l:
    print(element)
祝你好运!

答案 1 :(得分:2)

如果您事先不知道项目数,则列表 权利结构以保留项目。

但是,你可以切断几个已知物品,并将未知尾巴留作清单:

a, b, *rest = ["ay", "bee", "see", "what", "remains"]
print("%r, %r, rest is %r" % (a, b, rest))

答案 2 :(得分:0)

a,b,c = my_list

只要列表中的元素数量等于要解包的变量数量,它就会起作用,它实际上适用于任何可迭代,元组,列表,集合等

如果列表较长,您可以随时访问前3个元素(如果这是您想要的)

a = my_list[0] 
b = my_list[1]
c = my_list[2]

或一行

a, b, c = my_list[0], my_list[1], my_list[2]

使用切片表示法更好,您可以使用前3个元素获得右侧的子列表

a, b, c = my_list[:3]

只要列表大小至少为3,或者你想要的变量数

,那些就可以工作

您也可以使用扩展解压缩符号

a, b, c, *the_rest = my_list

其余的将是列表,除了前3个元素之外,列表中包含其他所有内容,并且列表需要大小为3或更多

这几乎涵盖了提取特定数量项目的所有方法

现在取决于你将要做些什么,你可能会更好地使用常规循环

for item in my_list:
    #do something with the current item, like printing it
    print(item)
每个迭代项中的

将获取列表中一个元素的值,以便您执行当时需要执行的操作

如果您想要的是在每次迭代中当时需要3个项目,有几种方法可以做到这一点

例如

for i in range(3,len(my_list),3)
    a,b,c = my_list[i-3:i]
    print(a,b,c)

还有更多有趣的构造,比如

it = [iter(my_list)]*3
for a,b,c in zip(*it):
    print(a,b,c)

和其他与itertools模块。

但是现在你说了一些有趣的事情“所以每个术语都分配给一个变量”,这是错误的方法,你不希望运行的未知数量的变量变得非常快,你使用列表,如果你想对每个元素做一些工作,有很多方法可以像列表理解那样做

my_new_list = [ some_fun(x) for x in my_list ]

或以旧方式

my_new_list = []
for x in my_list:
    my_new_list.append( some_fun(x) )

或者如果您当时需要处理超过1项,请将其与上述

中的一些项目结合使用

答案 3 :(得分:0)

我不知道您的用例是否需要将字符串存储在不同的变量中。这通常是一个坏主意。

但是如果你确实需要它,那么你可以使用exec builtin,它接受python语句的字符串表示并执行它。

list_of_strings = ['ACGAAAG', 'CAGAAGC', 'ACCTGTT']

动态生成与Excel工作表中的列名相同的变量名。 (A,B,C .... Z,AA,AB ........,AAA ....)

在这个具体案例中

variable_names = ['A', 'B', 'C']

for vn, st in zip(variable_names, list_of_strings):
        exec('{} = "{}"'.format(vn, st))

测试一下,print(A,B,C)将输出三个字符串,你可以在程序的其余部分使用A,B and C作为变量