如何在列表中的列表中存储整数?

时间:2017-12-14 16:25:29

标签: python list integer

Model::whereDate('column', '>', $this->freshTimestamp()->subDay())->get()

我试图将children = [1220, 1221, 2220, 2221, 2222, 3220, 3221, 4220, 4221, 5220] child_list = [] child_inc = 1 for i in children: digits = [str(x) for x in str(i)] if int(digits[0]) == child_inc: var = str("".join(digits)) child_list.append([var]) child_inc += 1 print(child_list) 分解为列表列表,首先将它们转换为字符串,然后读取第一个数字。如果第一个数字是1,则附加到列表,并将其存储在children中。然后,对于以2开头的整数,将它们排序到child_list[0]的另一个列表中,依此类推。

现在,此代码只能找到符合条件的第一个项目。最终输出是一个字符串并不重要。 感谢。

5 个答案:

答案 0 :(得分:1)

你必须创建一个辅助列表,并进行嵌套循环,这样做:

children = [1220, 1221, 2220, 2221, 2222, 3220, 3221, 4220, 4221, 5220]
child_list = []

for i in range(1,6):
    lst = []
    for num in children:
      digits = str(num)
      if int(digits[0]) == i:
            lst.append(digits)
    child_list.append(lst)

print(child_list)

res => [['1220', '1221'], ['2220', '2221', '2222'], ['3220', '3221'], ['4220', '4221'], ['5220']]

答案 1 :(得分:0)

只需添加下一个代码段:

elif int(digits[0]) == 2: var = str("".join(digits)) child_list2.append([var])

删除该行: child_inc += 1

此行可防止找到符合条件的所有其他项目。

答案 2 :(得分:0)

您可以简化数字顶部的str。 您似乎想要为每个起始数字建立一个列表。 在您需要的数字上运行child_inc并检查您拥有的数字。 你在if中增加了这个,所以只得到匹配的第一个项目。 像这样:

children = [1220, 1221, 2220, 2221, 2222, 3220, 3221, 4220, 4221, 5220]
child_list = []

for child_inc in range(1,10):
    kids = [] #<--- new list for this digit
    for i in children:
        digits = str(i)
        if int(digits[0]) == child_inc:
            var = str("".join(digits))
            kids.append(var)
    child_list.append(kids)
print(child_list)

答案 3 :(得分:0)

或许dict方法在这里更好:

children = [1220, 1221, 2220, 2221, 2222, 3220, 3221, 4220, 4221, 5220]

strs = [ str(x) for x in children]
res=defaultdict(list)
for s in strs :
    res[s[0]].append(s[1:])

print(list(res.values()))

#[['220', '221'], ['220', '221', '222'], ['220', '221'], ['220', '221'], ['220']]

答案 4 :(得分:0)

让我们先了解实际问题:

  

示例提示:

假设你有一个清单:

a=[(2006,1),(2007,4),(2008,9),(2006,5)]

并且你希望将它转换为dict作为元组的第一个元素作为元组的键和第二个元素。类似的东西:

{2008: [9], 2006: [5], 2007: [4]}

但是有一个问题,你也想要那些具有不同值但键相同的键,如(2006,1)和(2006,5)键是相同的,但值是不同的。你希望那些值只附加一个键,所以预期输出:

{2008: [9], 2006: [1, 5], 2007: [4]}

对于这类问题,我们会这样做:

首先创建一个新的字典然后我们遵循这种模式:

if item[0] not in new_dict:
    new_dict[item[0]]=[item[1]]
else:
    new_dict[item[0]].append(item[1])

因此我们首先检查密钥是否在新的dict中,如果已经存在,则将duplicate key的值添加到其值中:

完整代码:

a=[(2006,1),(2007,4),(2008,9),(2006,5)]

new_dict={}

for item in a:
    if item[0] not in new_dict:
        new_dict[item[0]]=[item[1]]
    else:
        new_dict[item[0]].append(item[1])

print(new_dict)

现在回到实际问题:

您可以使用此模式并使用相同的第一个数字保存int:

children = [1220, 1221, 2220, 2221, 2222, 3220, 3221, 4220, 4221, 5220]
track={}
for i in children:
    if str(i)[:1] not in track:
        track[str(i)[:1]]=[i]
    else:
        track[str(i)[:1]].append(i)

print(track.values())

输出:

[[3220, 3221], [4220, 4221], [1220, 1221], [2220, 2221, 2222], [5220]]