[英]How do you convert a list of strings to separate strings in Python 3?
我想知道您是否有一个字符串列表,例如:
l = ['ACGAAAG', 'CAGAAGC', 'ACCTGTT']
您如何将其转换为:
O = 'ACGAAAG'
P = 'CAGAAGC'
Q = 'ACCTGTT'
您可以在不知道列表中项目数的情况下执行此操作吗? 您必须将它们存储为变量。 (变量无关紧要。)
欢迎来到SE!
如果您知道字符串的结构,则可以简单地将其解压缩:
O, P, Q = my_list
使用for循环解压缩列表。 对循环中的每个字符串进行处理。 在下面,我只是简单地打印每个:
for element in l:
print(element)
祝好运!
如果您事先不知道项目数,则列表是保留项目的正确结构。
但是,您可以切断一些已知的项目,并将未知的尾部保留为列表:
a, b, *rest = ["ay", "bee", "see", "what", "remains"]
print("%r, %r, rest is %r" % (a, b, rest))
a,b,c = my_list
只要列表中的元素数量等于您要解压缩的变量的数量,此方法就可以工作,它实际上可以与任何可迭代,元组,列表,集合等一起使用
如果列表较长,那么您始终可以访问前三个元素
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) )
或者如果您一次需要处理多于一项的内容,请将其与上述某些内容结合使用
我不知道您的用例是否要求将字符串存储在不同的变量中。 通常这是一个坏主意。
但是,如果确实需要它,则可以使用exec
内置exec
,该exec
采用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
用作变量
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.