我有一个任意长度的列表,我需要将它分成相同大小的块并对其进行操作.有一些明显的方法可以做到这一点,比如保留一个计数器和两个列表,当第二个列表填满时,将它添加到第一个列表并清空下一轮数据的第二个列表,但这可能非常昂贵.
我想知道是否有人对任何长度的列表都有一个很好的解决方案,例如使用生成器.
我一直在寻找有用的东西,itertools但我找不到任何明显有用的东西.但是可能会错过它.
我有一个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)
但是,仍然没有"感觉"正确.: - /
可能重复:
单个列表中的对
我有一个小整数列表,说:
[1, 2, 3, 4, 5, 6]
Run Code Online (Sandbox Code Playgroud)
我希望收集顺序对并返回一个包含从这些对创建的元组的新列表,即:
[(1, 2), (3, 4), (5, 6)]
Run Code Online (Sandbox Code Playgroud)
我知道必须有一个非常简单的方法来做到这一点,但不能完全解决它.
谢谢
与列表展平相反.
给定列表和长度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编程"),它们是一样的吗?
谢谢.
我正在尝试编写一个函数来检查列表是否已排序(返回True或False).如何避免多个变量指向同一个东西?
def is_sorted(t):
a = t
a.sort()
Run Code Online (Sandbox Code Playgroud)
当我做到这一点,既排序a和t.我怎么能避免这个?
我有一串
"{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迭代时遇到问题.我有这个结构:
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)
非常感谢你!!
我有两个清单
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)
任何帮助表示赞赏.
输入文件如下所示:
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 ×9
list ×3
chunks ×2
alias ×1
dictionary ×1
file ×1
grouping ×1
iteration ×1
loops ×1
optimization ×1
python-3.x ×1
readline ×1
split ×1