在这个循环中:
lst=[1,2,3,4,5,6,7,8,9]
for i in lst:
print i
不是只打印i,而是每次都有一种方法将i指向一个新变量? 所以我会得到类似的东西:item1 = 1 item2 = 2 item3 = 3等等。
或者有没有办法创建新变量而不知道我需要多少?
例如,列表lst中的每个项目的变量,或者用户给出的任何其他列表(使用任何其他len())。
对于所有想知道的人。这样做的关键是以后能够调用变量。我的代码在列表中搜索符合certein标准的段,我希望以后能够到达段,或者至少为用户能够访问段。我是编程新手,所以如果你有更好的方法,请告诉我。
答案 0 :(得分:0)
不要这样做。您已经存储了数据。不要执行item1
,而只需执行lst[0]
。
item2
- > lst[1]
item3
- > lst[2]
itemn
- > lst[n-1]
编辑2:
试试这个:
>>> from itertools import groupby
>>> def split_condition(x):
return (x == 3)
>>> [list(g) for k, g in groupby([1, 2, 3, 4, 5, 6, 3, 4, 3, 5], split_condition)]
[[1, 2], [3], [4, 5, 6], [3], [4], [3], [5]]
答案 1 :(得分:0)
您希望根据特定条件对数据进行分区。假设您有一个函数figure_out_class
,它为您提供数据所属类的描述。然后你可以使用字典来做到这一点:
partitions = {}
for i in lst:
key = figure_out_class(i)
if key not in partitions:
partitions[key] = []
partitions[key].append(i)
这是“那里的关键吗?”可以避免首先使用您需要的类或使用defaultdict
填充字典:
from collections import defaultdict
partitions = defaultdict(list)
for i in lst:
key = figure_out_class(i)
partitions[key].append(i)
有关实际示例,请说您希望将数字归类为odd
或even
:
def figure_out_class(number):
return ("odd" if number % 2 else "even")
将该函数应用于上一段代码可以得到:
>>> partitions['odd']
[1, 3, 5, 7, 9]
>>> partitions['even']
[2, 4, 6, 8]
答案 2 :(得分:-1)
您可以这样做:
lst=[1,2,3,4,5,6,7,8,9]
for i in xrange(len(lst)):
exec('item%d=%d' % (i, lst[i]))
将创建变量item0,item1 ...所有值都等于列表中的各个位置。
虽然我没有看到这一切:)