我想知道你是否有一个字符串列表,如:
l = ['ACGAAAG', 'CAGAAGC', 'ACCTGTT']
如何将其转换为:
O = 'ACGAAAG'
P = 'CAGAAGC'
Q = 'ACCTGTT'
你能不知道列表中的项目数量吗?您必须将它们存储为变量。 (变量无关紧要。)
答案 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
作为变量