相关疑难解决方法(0)

如何将列表拆分为大小均匀的块?

我有一个任意长度的列表,我需要将它分成相同大小的块并对其进行操作.有一些明显的方法可以做到这一点,比如保留一个计数器和两个列表,当第二个列表填满时,将它添加到第一个列表并清空下一轮数据的第二个列表,但这可能非常昂贵.

我想知道是否有人对任何长度的列表都有一个很好的解决方案,例如使用生成器.

我一直在寻找有用的东西,itertools但我找不到任何明显有用的东西.但是可能会错过它.

相关问题:在块中迭代列表的最"pythonic"方法是什么?

python split list chunks

2068
推荐指数
40
解决办法
84万
查看次数

在块中迭代列表的最"pythonic"方法是什么?

我有一个Python脚本,它将整数列表作为输入,我需要一次使用四个整数.不幸的是,我无法控制输入,或者我将它作为四元素元组列表传入.目前,我正在以这种方式迭代它:

for i in xrange(0, len(ints), 4):
    # dummy op for example code
    foo += ints[i] * ints[i + 1] + ints[i + 2] * ints[i + 3]
Run Code Online (Sandbox Code Playgroud)

它看起来很像"C-think",这让我怀疑有更多的pythonic方式来处理这种情况.迭代后会丢弃该列表,因此无需保留.也许这样的事情会更好吗?

while ints:
    foo += ints[0] * ints[1] + ints[2] * ints[3]
    ints[0:4] = []
Run Code Online (Sandbox Code Playgroud)

但是,仍然没有"感觉"正确.: - /

相关问题:如何在Python中将列表拆分为大小均匀的块?

python optimization loops list chunks

449
推荐指数
15
解决办法
12万
查看次数

将列表中的每对元素收集到Python中的元组中

可能重复:
单个列表中的对

我有一个小整数列表,说:

[1, 2, 3, 4, 5, 6]
Run Code Online (Sandbox Code Playgroud)

我希望收集顺序对并返回一个包含从这些对创建的元组的新列表,即:

[(1, 2), (3, 4), (5, 6)]
Run Code Online (Sandbox Code Playgroud)

我知道必须有一个非常简单的方法来做到这一点,但不能完全解决它.

谢谢

python

20
推荐指数
3
解决办法
2万
查看次数

创建子列表

与列表展平相反.

给定列表和长度n返回长度为n的子列表的列表.

def sublist(lst, n):
    sub=[] ; result=[]
    for i in lst:
        sub+=[i]
        if len(sub)==n: result+=[sub] ; sub=[]
    if sub: result+=[sub]
    return result
Run Code Online (Sandbox Code Playgroud)

一个例子:

如果列表是:

[1,2,3,4,5,6,7,8]
Run Code Online (Sandbox Code Playgroud)

而n是:

3
Run Code Online (Sandbox Code Playgroud)

返回:

[[1, 2, 3], [4, 5, 6], [7, 8]]
Run Code Online (Sandbox Code Playgroud)

有更有说服力/简洁的方式吗?

另外,将列表附加到列表时(在上面的上下文中)首选:

list1+=[list2]
Run Code Online (Sandbox Code Playgroud)

要么:

list1.append(list2)
Run Code Online (Sandbox Code Playgroud)

鉴于此(根据Summerfeild的"Python 3编程"),它们是一样的吗?

谢谢.

python grouping list

18
推荐指数
4
解决办法
3万
查看次数

避免python中的对象别名?

我正在尝试编写一个函数来检查列表是否已排序(返回TrueFalse).如何避免多个变量指向同一个东西?

def is_sorted(t):
    a = t
    a.sort()
Run Code Online (Sandbox Code Playgroud)

当我做到这一点,既排序at.我怎么能避免这个?

python alias

7
推荐指数
2
解决办法
7764
查看次数

如何在Python中将不带引号的字符串转换成字典

我有一串

"{a:'b', c:'d',e:''}"
Run Code Online (Sandbox Code Playgroud)

请不要因为字典条目的键未加引号,所以上一个问题eval("{a:'b', c:'d',e:''}")所建议的简单方法不起作用。

将这个字符串转换成字典的最方便的方法是什么?

{'a':'b', 'c':'d', 'e':''}
Run Code Online (Sandbox Code Playgroud)

python

5
推荐指数
2
解决办法
409
查看次数

迭代列表python

我在python迭代时遇到问题.我有这个结构:

a = [('f', 'f'),
 ('a', 'a'),
 ('e', 'e'),
 ('d', 'd'),
 ('e', 'e'),
 ('d', 'd'),
 ('b', 'b'),
 ('e', 'e'),
 ('d', 'd'),
 ('b', 'b'),
 ('a', 'a'),
 ('b', 'b'),
 ('g', 'g'),
 ('h', 'h'),
 ('c', 'c'),
 ('h', 'h'),
 ('a', 'a'),
 ('c', 'c'),
 ('g', 'g'),
 ('h', 'h'),
 ('g', 'g'),
 ('c', 'c'),
 ('f', 'f')]
Run Code Online (Sandbox Code Playgroud)

从那里我想得到一个输出,给我一个括号的第一个值与下一个括号的值,如下所示:

b = [('f','a'), ('a','e'), ('e','d')etc..]
Run Code Online (Sandbox Code Playgroud)

非常感谢你!!

python iteration

2
推荐指数
1
解决办法
59
查看次数

将列表中的每个元素转换为键值对

我有两个清单

list1 = [1,a,2,b,3,c]
list2 = [5,d,6,e,7,f]
Run Code Online (Sandbox Code Playgroud)

我试着用 list(zip(list1, list2))

那就是我得到的:

[(1, 5), ('a', 'd'), (2, 6), ('b', 'e'), (3, 7), ('c', 'f')]
Run Code Online (Sandbox Code Playgroud)

我希望这样的东西成为我的输出:

{1:a, 5:d, 2:b, 6:e, 3:c,7:f}
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏.

python python-3.x

2
推荐指数
1
解决办法
69
查看次数

Python将非统一行放入字典中

输入文件如下所示:

A 3.00 B 4.00 C 5.00 D 6.00
E 3.20 F 6.00 G 8.22
H 9.00 
I 9.23 J 89.2
K 32.344
Run Code Online (Sandbox Code Playgroud)

我希望字符成为字典中的键,而浮点数是值.

这是我到目前为止的非工作失败.

def main():
   #Input File
   reader = open('candidate.txt', 'r'

   my_dictionary = {}
   i=0
   for line in reader.readlines():
      variable = line.split(' ')[i]
      value = line.split(' ')[i+1]
      my_dictionary[variable]= value
      i+=2

      print my_dictionary

if __name__ == '__main__':
  main()
Run Code Online (Sandbox Code Playgroud)

python dictionary file readline

0
推荐指数
1
解决办法
175
查看次数