我正在使用Python为我工作的实验室编程.如何切出给定字符串中的每3个字符并将其附加到列表中?
即XXXxxxXXXxxxXXXxxxXXXxxxXXX(其中X或x是任何给定的字母)
string = 'XXXxxxXXXxxxXXXxxxXXXxxxXXX'
mylist = []
for x in string:
string[?:?:?]
mylist.append(string)
Run Code Online (Sandbox Code Playgroud)
我希望列表看起来像这样:['XXX','xxx','XXX','xxx','XXX'......等等]
有任何想法吗?
我正在寻找一种"浏览"Python迭代器的方法.也就是说,我想将一个给定的迭代器iter和page_size与另一个迭代器包装起来,该迭代器将把它作为一系列"页面"从iter返回.每个页面本身都是一个迭代器,最多包含page_size迭代.
我查看了itertools,我看到的最接近的是itertools.islice.在某些方面,我想要的是与itertools.chain相反- 而不是将一系列迭代器链接到一个迭代器中,我想将迭代器分解为一系列较小的迭代器.我期待在itertools中找到一个分页功能,但找不到.
我想出了以下的传呼器类和演示.
class pager(object):
"""
takes the iterable iter and page_size to create an iterator that "pages through" iter. That is, pager returns a series of page iterators,
each returning up to page_size items from iter.
"""
def __init__(self,iter, page_size):
self.iter = iter
self.page_size = page_size
def __iter__(self):
return self
def next(self):
# if self.iter has not been exhausted, return the next slice
# I'm using …Run Code Online (Sandbox Code Playgroud) 给出一个清单
A = [1 2 3 4 5 6]
Run Code Online (Sandbox Code Playgroud)
是否有任何惯用(Pythonic)方式迭代它就好像它一样
B = [(1, 2) (3, 4) (5, 6)]
Run Code Online (Sandbox Code Playgroud)
索引除外?感觉就像C的延续:
for a1,a2 in [ (A[i], A[i+1]) for i in range(0, len(A), 2) ]:
Run Code Online (Sandbox Code Playgroud)
我不禁觉得应该有一些聪明的黑客使用itertools或切片或其他东西.
(当然,一次两个只是一个例子;我想要一个适用于任何n的解决方案.)
编辑:在Python中一次迭代字符串2(或n)个字符,但即使是最干净的解决方案(使用zip接受)也不能很好地推广到更高的n而没有列表理解和*-notation.
我想要做的很简单,但我找不到怎么做.
从:
list = ['1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b']
Run Code Online (Sandbox Code Playgroud)
至:
list1 = ['1', '5', '9']
list2 = ['2', '6', 'a']
list3 = ['3', '7', 'b']
list4 = ['4', '9']
Run Code Online (Sandbox Code Playgroud)
换句话说,我需要知道如何:
我必须创建一个程序,从命令行读取文件并将其转换为ASCII艺术.我使用的是PPM格式,这里是项目的链接.
这是我到目前为止:
import sys
def main(filename):
image = open(filename)
#reads through the first three lines
color = image.readline().splitlines()
size_width, size_height = image.readline().split()
max_color = image.readline().splitlines()
#reads the body of the file
pixels = image.read().split()
red = 0
green = 0
blue = 0
r_g_b_value = []
#pulls out the values of each tuple and coverts it to its grayscale value
for i in pixels:
if i != "\n" or " ":
if len(i) == 3:
red = int(i[0]) …Run Code Online (Sandbox Code Playgroud) 如何从字符串中获取python而不是一个字符,而是两个?
我有:
long_str = 'abcd'
for c in long_str:
print c
Run Code Online (Sandbox Code Playgroud)
它让我喜欢
a
b
c
d
Run Code Online (Sandbox Code Playgroud)
但我需要得到
ab
cd
Run Code Online (Sandbox Code Playgroud)
我是python中的新手..有什么办法吗?
我想将数据从大型csv文件迁移到sqlite3数据库.
我使用pandas在Python 3.5上的代码:
con = sqlite3.connect(DB_FILENAME)
df = pd.read_csv(MLS_FULLPATH)
df.to_sql(con=con, name="MLS", if_exists="replace", index=False)
Run Code Online (Sandbox Code Playgroud)
是否可以打印执行to_sql方法的当前状态(进度条)?
我查看了关于tqdm的文章,但没有找到如何做到这一点.
最好的答案是什么是以块为单位迭代列表的最"pythonic"方式?使用函数izip_longest来分块列表.但我无法理解.
def grouper(iterable, n, fillvalue=None):
args = [iter(iterable)] * n
return izip_longest(*args, fillvalue=fillvalue)
for item in grouper(range(10), 4):
print list(item)
Run Code Online (Sandbox Code Playgroud)
我运行上面的代码,然后创建分块列表:
[1 ,2, 3, 4]
[5, 6, 7, 8]
[9, 10, None, None]
Run Code Online (Sandbox Code Playgroud)
我试着一步一步地运行它:
In [1]: args = [iter(range(10))] * 4
In [2]: args
Out[2]:
[<listiterator at 0x1ad7610>,
<listiterator at 0x1ad7610>,
<listiterator at 0x1ad7610>,
<listiterator at 0x1ad7610>]
Run Code Online (Sandbox Code Playgroud)
列表由同一个迭代器创建.我知道实现了izip_longest函数来生成列表对.如何通过izip_longest将迭代器转换为分块列表?谢谢.
考虑一个字符串'1234'.你需要一个能产生所有旋转的功能:'1234', '3412', '4123', '2341'.我创建了一个简单的测试套件:
assert rotations('123') == set(['123', '231', '312'])
assert rotations('111') == set(['111'])
assert rotations('197') == set(['197', '971', '719'])
Run Code Online (Sandbox Code Playgroud)
什么是pythonic方式呢?我完成了下面的代码
def rotations(num):
str_num = str(num)
result = set()
for mid in xrange(len(str_num)):
result.add(
str_num[mid:] + str_num[:mid]
)
return result
Run Code Online (Sandbox Code Playgroud) 我有一个已知格式/结构的二进制文件.
如何将所有二进制数据读入结构数组?
像(在伪代码中)
bytes = read_file(filename)
struct = {'int','int','float','byte[255]'}
data = read_as_struct(bytes, struct)
data[1]
>>> 10,11,10.1,Arr[255]
Run Code Online (Sandbox Code Playgroud)
编辑:
目前解决方案:
data = []
fmt = '=iiiii256i'
fmt_s = '=iiiii'
fmt_spec = '256i'
struct_size = struct.calcsize(fmt)
for i in range(struct_size, len(bytes)-struct_size, struct_size):
dat1= list(struct.unpack(fmt_s, bytes[i-struct_size:i-1024]))
dat2= list(struct.unpack(fmt_spec, bytes[i-1024:i]))
dat1.append(dat2)
data.append(dat1)
Run Code Online (Sandbox Code Playgroud)