100% found this document useful (3 votes)
63 views

(Ebooks PDF) Download Python One Liners Write Concise Eloquent Python Like A Professional 1st Edition Christian Mayer Full Chapters

Python

Uploaded by

rijadialdeab
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (3 votes)
63 views

(Ebooks PDF) Download Python One Liners Write Concise Eloquent Python Like A Professional 1st Edition Christian Mayer Full Chapters

Python

Uploaded by

rijadialdeab
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 62

Download the full version of the textbook now at textbookfull.

com

Python One Liners Write Concise Eloquent


Python Like a Professional 1st Edition
Christian Mayer

https://textbookfull.com/product/python-one-
liners-write-concise-eloquent-python-like-a-
professional-1st-edition-christian-mayer/

Explore and download more textbook at https://textbookfull.com


Recommended digital products (PDF, EPUB, MOBI) that
you can download immediately if you are interested.

Effective Python 90 Specific Ways to Write Better Python


2nd Edition Brett Slatkin

https://textbookfull.com/product/effective-python-90-specific-ways-to-
write-better-python-2nd-edition-brett-slatkin/

textbookfull.com

Effective Python 90 specific ways to write better Python


Second Edition Brett Slatkin

https://textbookfull.com/product/effective-python-90-specific-ways-to-
write-better-python-second-edition-brett-slatkin/

textbookfull.com

Functional Python Programming: Use a functional approach


to write succinct, expressive, and efficient Python code,
3rd Edition Lott
https://textbookfull.com/product/functional-python-programming-use-a-
functional-approach-to-write-succinct-expressive-and-efficient-python-
code-3rd-edition-lott/
textbookfull.com

Physical properties of diamond and sapphire First Edition


Aggarwal

https://textbookfull.com/product/physical-properties-of-diamond-and-
sapphire-first-edition-aggarwal/

textbookfull.com
Animals in Victorian Literature and Culture: Contexts for
Criticism 1st Edition Laurence W. Mazzeno

https://textbookfull.com/product/animals-in-victorian-literature-and-
culture-contexts-for-criticism-1st-edition-laurence-w-mazzeno/

textbookfull.com

The Secret of the Nagas The Shiva Trilogy Book 2 2011th


Edition Amish Tripathi

https://textbookfull.com/product/the-secret-of-the-nagas-the-shiva-
trilogy-book-2-2011th-edition-amish-tripathi/

textbookfull.com

Strategic Priorities in Competitive Environments:


Multidimensional Approaches for Business Success Hasan
Dincer
https://textbookfull.com/product/strategic-priorities-in-competitive-
environments-multidimensional-approaches-for-business-success-hasan-
dincer/
textbookfull.com

Thermal Physics Thermodynamics and Statistical Mechanics


for Scientists and Engineers 1st Edition Robert Floyd
Sekerka
https://textbookfull.com/product/thermal-physics-thermodynamics-and-
statistical-mechanics-for-scientists-and-engineers-1st-edition-robert-
floyd-sekerka/
textbookfull.com

Routledge Handbook Of International Cybersecurity Eneken


Tikk

https://textbookfull.com/product/routledge-handbook-of-international-
cybersecurity-eneken-tikk/

textbookfull.com
The Politics of Technology in Africa Iginio Gagliardone

https://textbookfull.com/product/the-politics-of-technology-in-africa-
iginio-gagliardone/

textbookfull.com
PYTHON
ONE-LINERS
W R I T E C O N C I S E , E L O Q U E N T P Y T H O N
L I K E A P R O F E S S I O N A L

CHRISTIAN MAYER
PYTHON ONE-LINERS
PY THON
ONE‑L INE RS
W r i t e C o n c i s e, E l o q u e n t
P y thon Like a Professional

by Christian M ayer

San Francisco
PYTHON ONE-LINERS. Copyright © 2020 by Christian Mayer.

All rights reserved. No part of this work may be reproduced or transmitted in any form or by any means,
electronic or mechanical, including photocopying, recording, or by any information storage or retrieval
system, without the prior written permission of the copyright owner and the publisher.

ISBN-10: 1-7185-0050-5
ISBN-13: 978-1-7185-0050-1

Publisher: William Pollock


Production Editors: Janelle Ludowise and Kassie Andreadis
Cover Illustration: Rob Gale
Interior Design: Octopod Studios
Developmental Editors: Liz Chadwick and Alex Freed
Technical Reviewer: Daniel Zingaro
Copyeditor: Sharon Wilkey
Compositor: Danielle Foster
Proofreader: James Fraleigh
Indexer: JoAnne Burek

For information on distribution, translations, or bulk sales, please contact No Starch Press, Inc. directly:
No Starch Press, Inc.
245 8th Street, San Francisco, CA 94103
phone: 1.415.863.9900; [email protected]
www.nostarch.com

The Library of Congress issued the following Cataloging-in-Publication Data for the first edition:

Names: Mayer, Christian (Computer Scientist), author.


Title: Python one-liners: write concise, eloquent Python like a professional / Christian Mayer.
Description: San Francisco : No Starch Press, Inc., 2020. | Includes index.
Identifiers: LCCN 2020001449 (print) | LCCN 2020001450 (ebook) | ISBN
9781718500501 | ISBN 9781718500518 (ebook)
Subjects: LCSH: Python (Computer program language)
Classification: LCC QA76.73.P98 M39 2020 (print) | LCC QA76.73.P98
(ebook) | DDC 005.13/3--dc23
LC record available at https://lccn.loc.gov/2020001449
LC ebook record available at https://lccn.loc.gov/2020001450

No Starch Press and the No Starch Press logo are registered trademarks of No Starch Press, Inc. Other
product and company names mentioned herein may be the trademarks of their respective owners. Rather
than use a trademark symbol with every occurrence of a trademarked name, we are using the names only
in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of
the trademark.

The information in this book is distributed on an “As Is” basis, without warranty. While every precaution
has been taken in the preparation of this work, neither the author nor No Starch Press, Inc. shall have any
liability to any person or entity with respect to any loss or damage caused or alleged to be caused directly
or indirectly by the information contained in it.
To my wife Anna
About the Author
Christian Mayer is a doctor of computer science and the founder
and maintainer of the popular Python site https://blog.finxter.com/
and its associated newsletter, which has 20,000 active subscrib-
ers and is still growing. His rapidly growing websites help tens
of thousands of students improve their coding skills and online
businesses. Christian is also the author of the Coffee Break Python
series of self-published books.

About the Technical Reviewer


Dr. Daniel Zingaro is an assistant teaching professor of computer
science and award-winning teacher at the University of Toronto.
His main area of research is computer science education, where
he studies how students learn (and sometimes don’t learn) com-
puter science material. He is the author of Algorithmic Thinking
(forthcoming from No Starch Press).
Visit https://textbookfull.com
now to explore a rich
collection of eBooks, textbook
and enjoy exciting offers!
BRIEF CONTENTS

Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii

Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix

Chapter 1: Python Refresher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

Chapter 2: Python Tricks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

Chapter 3: Data Science . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

Chapter 4: Machine Learning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

Chapter 5: Regular Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

Chapter 6: Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151

Afterword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
CONTE NT S IN DE TA IL

ACKNOWLEDGMENTS xvii

INTRODUCTION xix
Python One-Liner Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xx
A Note on Readability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxi
Who Is This Book For? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxii
What Will You Learn? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxii
Online Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiii

1
PYTHON REFRESHER 1
Basic Data Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Numerical Data Types and Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Booleans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
The Keyword None . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Container Data Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Stacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Dictionaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Membership . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
List and Set Comprehension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Control Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
if, else, and elif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Lambdas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2
PYTHON TRICKS 17
Using List Comprehension to Find Top Earners . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Using List Comprehension to Find Words with High Information Value . . . . . . . . . . . . . . 21
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Reading a File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Using Lambda and Map Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Using Slicing to Extract Matching Substring Environments . . . . . . . . . . . . . . . . . . . . . . 26
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Combining List Comprehension and Slicing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Using Slice Assignment to Correct Corrupted Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Analyzing Cardiac Health Data with List Concatenation . . . . . . . . . . . . . . . . . . . . . . . 33
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Using Generator Expressions to Find Companies That Pay Below Minimum Wage . . . . . 35
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Formatting Databases with the zip() Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

3
DATA SCIENCE 41
Basic Two-Dimensional Array Arithmetic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Working with NumPy Arrays: Slicing, Broadcasting, and Array Types . . . . . . . . . . . . . . 46
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Conditional Array Search, Filtering, and Broadcasting to Detect Outliers . . . . . . . . . . . . 53
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

xii   Contents In Detail
Boolean Indexing to Filter Two-Dimensional Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Broadcasting, Slice Assignment, and Reshaping to Clean Every i-th Array Element . . . . . 60
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
When to Use the sort() Function and When to Use the argsort() Function in NumPy . . . . . 64
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
How to Use Lambda Functions and Boolean Indexing to Filter Arrays . . . . . . . . . . . . . . 68
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
How to Create Advanced Array Filters with Statistics, Math, and Logic . . . . . . . . . . . . . 70
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Simple Association Analysis: People Who Bought X Also Bought Y . . . . . . . . . . . . . . . . 74
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Intermediate Association Analysis to Find Bestseller Bundles . . . . . . . . . . . . . . . . . . . . 77
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

4
MACHINE LEARNING 81
The Basics of Supervised Machine Learning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Training Phase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Inference Phase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Linear Regression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Logistic Regression in One Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
K-Means Clustering in One Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
K-Nearest Neighbors in One Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

Contents In Detail   xiii
Neural Network Analysis in One Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Decision-Tree Learning in One Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Get Row with Minimal Variance in One Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Basic Statistics in One Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
Classification with Support-Vector Machines in One Line . . . . . . . . . . . . . . . . . . . . . . 119
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Classification with Random Forests in One Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126

5
REGULAR EXPRESSIONS 127
Finding Basic Textual Patterns in Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Writing Your First Web Scraper with Regular Expressions . . . . . . . . . . . . . . . . . . . . . 132
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
Analyzing Hyperlinks of HTML Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Extracting Dollars from a String . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
Finding Nonsecure HTTP URLs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141

xiv   Contents In Detail
Validating the Time Format of User Input, Part 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Validating Time Format of User Input, Part 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Duplicate Detection in Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Detecting Word Repetitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
Modifying Regex Patterns in a Multiline String . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

6
ALGORITHMS 151
Finding Anagrams with Lambda Functions and Sorting . . . . . . . . . . . . . . . . . . . . . . . 152
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
Finding Palindromes with Lambda Functions and Negative Slicing . . . . . . . . . . . . . . . 154
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
Counting Permutations with Recursive Factorial Functions . . . . . . . . . . . . . . . . . . . . . . 156
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
Finding the Levenshtein Distance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
Calculating the Powerset by Using Functional Programming . . . . . . . . . . . . . . . . . . . . 162
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Caesar’s Cipher Encryption Using Advanced Indexing and List Comprehension . . . . . . 165
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167

Contents In Detail   xv
Finding Prime Numbers with the Sieve of Eratosthenes . . . . . . . . . . . . . . . . . . . . . . . 168
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
Calculating the Fibonacci Series with the reduce() Function . . . . . . . . . . . . . . . . . . . . 174
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
A Recursive Binary Search Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
A Recursive Quicksort Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
The Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
The Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
How It Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182

AFTERWORD 183

INDEX 185

xvi   Contents In Detail
ACKNOWLEDGMENTS

The world doesn’t need more books; it needs better books. I’m incredibly
grateful to the people at No Starch Press for putting everything at work
toward this philosophy. This book is the result of their invaluable advice,
constructive feedback, and hundreds of hours of diligent work. My deep
gratitude goes to the No Starch team for making the book-writing process
such a fun experience.
In particular, I’d like to thank Bill Pollock for inviting me to write this
book and for providing me inspiration and deep insights into the publish-
ing world.
I’m very grateful for my brilliant content editor, Liz Chadwick, who
skillfully, patiently, and eloquently transformed my rough drafts into a
much more human-readable form. It’s because of her excellent support that
the book reached a level of clarity I would have never imagined when start-
ing this project.
I want to express my appreciation to Alex Freed for her relentless focus
on improving the text quality. It has been an honor to work together with
such a talented editor.
I’d like to thank my production editor, Janelle Ludowise, for polishing
the book with a great love for every detail. Janelle put her skills to work—in
a positive and enthusiastic manner—to craft the final version of the book.
Thanks, Janelle. Many thanks as well to Kassie Andreadis, who energetically
pushed the book through to completion.
My distinctive appreciation goes to Professor Daniel Zingaro. He didn’t
shy away from investing much of his time, effort, and excellent computer
science skills into eradicating inaccuracies from the book. He also contrib-
uted many wonderful suggestions that brought clarity to the book. Without
his effort, the book would not only contain more bugs but also be harder to
read. That said, any inaccuracies that remain are my own.
My doctorate supervisor, Professor Rothermel, contributed indirectly to
this book by investing considerable time, skill, and effort into my computer
science education. I owe him my deepest gratitude and appreciation.
I’m forever grateful to my beautiful wife, Anna Altimira, who keeps
listening to, encouraging, and supporting even my wildest ideas. I’m also
thankful to my kids, Amalie and Gabriel, for their inspiring curiosity and
the happiness they bring to my life through thousands of smiles.
Lastly, the greatest source of motivation came from the active members
of the Finxter community. First and foremost, I’ve written this book for
ambitious coders—like you—who want to advance their coding skills and
solve practical problems in the real world. After long working days, it was
grateful emails from Finxter members that encouraged me to write more
sections of the book.

xviii   Acknowledgments
Visit https://textbookfull.com
now to explore a rich
collection of eBooks, textbook
and enjoy exciting offers!
INTRODUCTION

With this book, I want to help you become


a Python expert. To do this, we’re going
to focus on Python one-liners: concise, useful
programs packed into a single line of Python.
Focusing on one-liners will help you read and write
code faster and more concisely, and will improve your
understanding of the language.
There are five more reasons I think learning Python one-liners will
help you improve and are worth studying.
First, by improving your core Python skills, you’ll be able to overcome
many of the small programming weaknesses that hold you back. It’s hard to
make progress without a profound understanding of the basics. Single lines
of code are the basic building block of any program. Understanding these
basic building blocks will help you master high-level complexity without
feeling overwhelmed.
Second, you’ll learn how to leverage wildly popular Python libraries,
such as those for data science and machine learning. The book consists of
five one-liner chapters, each addressing a different area of Python, from
regular expressions to machine learning. This approach will give you an
overview of possible Python applications you can build, as well as teach you
how to use these powerful libraries.
Third, you’ll learn to write more Pythonic code. Python beginners,
especially those coming from other programming languages, often write
code in un-Pythonic ways. We’ll cover Python-specific concepts like list
comprehension, multiple assignment, and slicing, all of which will help you
write code that’s easily readable and sharable with other programmers in
the field.
Fourth, studying Python one-liners forces you to think clearly and con-
cisely. When you’re making every single code symbol count, there’s no room
for sparse and unfocused coding.
Fifth, your new one-liner skill set will allow you to see through overly
complicated Python codebases, and impress friends and interviewers alike.
You may also find it fun and satisfying to solve challenging programming
problems with a single line of code. And you wouldn’t be alone: a vibrant
online community of Python geeks compete for the most compressed, most
Pythonic solutions to various practical (and not-so-practical) problems.

Python One-Liner Example


The central thesis of this book is that learning Python one-liners is both
fundamental to understanding more-advanced codebases and an excellent
tool for improving your skills. Before understanding what’s going on in a
codebase with thousands of lines, you must understand the meaning of a
single line of code.
Let’s have a quick look at a Python one-liner. Don’t worry if you don’t
fully understand it. You will master this one-liner in Chapter 6.

q = lambda l: q( u[x for x in l[1:] if x <= l[0]]) + [l[0]] + q([x for x in l if x > l[0]]) if l else []

This one-liner is a beautiful and concise way of compressing the famous


Quicksort algorithm, though the meaning may be difficult to grasp for
many Python beginners and intermediates.
Python one-liners often build on each other, so one-liners will increase
in complexity throughout the book. In this book, we’ll start with simple
one-liners that will become the basis for more-complex one-liners later. For
example, the preceding Quicksort one-liner is difficult and long, based on
the easier concept of list comprehension u. Here’s a simpler list comprehen-
sion that creates a list of squared numbers:

lst = [x**2 for x in range(10)]

We can break this one-liner into even simpler one-liners that teach
important Python basics, such as variable assignments, math operators,
data structures, for loops, membership operators, and the range() func-
tion—all of which happens in a single line of Python!

xx   Introduction
Know that basic doesn’t mean trivial. All the one-liners we’ll look at are
useful, and each chapter addresses a separate area or discipline in com-
puter science, giving you a broad perspective on the power of Python.

A Note on Readability
The Zen of Python comprises 19 guiding principles for the Python program-
ming languages. You can read it in your Python shell by entering import this:

>>> import this


The Zen of Python, by Tim Peters

Beautiful is better than ugly.


Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
--snip--

According to The Zen of Python, “Readability counts.” One-liners are


minimalistic programs to solve problems. In many cases, rewriting a piece
of code as a Python one-liner will improve readability and make the code
more Pythonic. An example is using list comprehension to reduce the creation
of lists into a single line of code. Have a look at the following example:

# BEFORE
squares = []

for i in range(10):
squares.append(i**2)

print(squares)
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

In this code snippet, we need five lines of code to create a list of the
first 10 square numbers and print it to the shell. However, it’s much better
to use a one-liner solution that accomplishes the same thing in a more read-
able and concise way:

# AFTER
print([i**2 for i in range(10)])
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

The output is the same, but the one-liner builds on the more Pythonic
concept of list comprehension. It’s easier to read and more concise.
However, Python one-liners can also be hard to understand. In some
cases, writing a solution as a Python one-liner isn’t more readable. But just
as the chess master must know all possible moves before deciding which one

Introduction   xxi
is best, you must know all ways of expressing your thoughts in code so that
you can decide on the best one. Going for the most beautiful solution is not
a low-priority matter; it’s at the core of the Python ecosystem. As The Zen of
Python teaches, “Beautiful is better than ugly.”

Who Is This Book For?


Are you a beginner- to intermediate-level Python coder? Like many of your
peers, you may be stuck in your coding progress. This book can help you
out. You’ve read a lot of programming tutorials online. You’ve written your
own source code and successfully shipped small projects. You’ve finished
a basic programming course and read a programming textbook or two.
Maybe you’ve even finished a technical program in college, where you’ve
learned about the basics of computer science and programming.
Perhaps you’re limited by certain beliefs, like that most coders under-
stand source code much faster than you, or that you’re nowhere near the top
10 percent of programmers. If you want to reach an advanced coding level
and join the top coding experts, you need to learn new applicable skills.
I can relate because when I started out studying computer science
10 years ago, I struggled with the belief that I knew nothing about coding.
At the same time, it seemed that all my peers were already very experienced
and proficient.
In this book, I want to help you overcome these limiting beliefs and
push you one step further toward Python mastery.

What Will You Learn?


Here is an overview of what you will learn.
Chapter 1: Python Refresher Introduces the very basics of Python to
refresh your knowledge.
Chapter 2: Python Tricks Contains 10 one-liner tricks to help you
master the basics, such as list comprehension, file input, the functions
lambda, map(), and zip(), the all() quantifier, slicing, and basic list arith-
metic. You’ll also learn how to use, manipulate, and leverage data struc-
tures to solve various day-to-day problems.
Chapter 3: Data Science Contains 10 one-liners for data science, build-
ing on the NumPy library. NumPy is at the heart of Python’s powerful
machine learning and data science capabilities. You’ll learn elementary
NumPy basics such as array, shape, axis, type, broadcasting, advanced
indexing, slicing, sorting, searching, aggregating, and statistics.
Chapter 4: Machine Learning Covers 10 one-liners for machine
learning with Python’s scikit-learn library. You’ll learn about regres-
sion algorithms that predict values. Examples of these include linear
regression, K-Nearest Neighbors, and neural networks. You’ll also learn
classification algorithms such as logistic regression, decision-tree learn-
ing, support-vector machines, and random forests. Furthermore, you’ll

xxii   Introduction
learn about how to calculate basic statistics of multidimensional data
arrays, and the K-Means algorithm for unsupervised learning. These
algorithms and methods are among the most important algorithms in
the field of machine learning.
Chapter 5: Regular Expressions Contains 10 one-liners to help you
achieve more with regular expressions. You’ll learn about various basic
regular expressions that you can combine (and recombine) in order to
create more-advanced regular expressions, using grouping and named
groups, negative lookaheads, escaped characters, whitespaces, character
sets (and negative characters sets), and greedy/nongreedy operators.
Chapter 6: Algorithms Contains 10 one-liner algorithms addressing
a wide range of computer science topics, including anagrams, palin-
dromes, supersets, permutations, factorials, prime numbers, Fibonacci
numbers, obfuscation, searching, and algorithmic sorting. Many of
these form the basis of more-advanced algorithms and contain the
seeds of a thorough algorithmic education.
Afterword Concludes this book and releases you into the real world,
packed with your new and improved Python coding skills.

Online Resources
To enhance the training material in this book, I’ve added supplementary
resources that you can find online at https://pythononeliners.com/ or http://www​
.nostarch.com/pythononeliners/. The interactive resources include the following:
Python cheat sheets You can download those Python cheat sheets as
printable PDFs and pin them to your wall. The cheat sheets contain
essential Python language features, and if you study them thoroughly,
you can refresh your Python skills and ensure that you’ve closed any
knowledge gap you may have.
One-liner video lessons As part of my Python email course, I’ve
recorded many Python one-liner lessons from this book, which you can
access for free. Those lessons can assist you in your learning and pro-
vide a multimedia learning experience.
Python puzzles You can visit the online resources to solve Python puz-
zles and use the Finxter.com app for free to test and train your Python
skills and measure your learning progress as you go through the book.
Code files and Jupyter notebooks You must roll up your sleeves and
start working with code to make progress toward Python mastery. Take
your time to play around with various parameter values and input data.
For your convenience, I’ve added all Python one-liners as executable
code files.

Introduction   xxiii
Random documents with unrelated
content Scribd suggests to you:
The Project Gutenberg eBook of Die
Frauenfrage im Mittelalter
This ebook is for the use of anyone anywhere in the United
States and most other parts of the world at no cost and with
almost no restrictions whatsoever. You may copy it, give it away
or re-use it under the terms of the Project Gutenberg License
included with this ebook or online at www.gutenberg.org. If you
are not located in the United States, you will have to check the
laws of the country where you are located before using this
eBook.

Title: Die Frauenfrage im Mittelalter

Author: Karl Bücher

Release date: August 5, 2019 [eBook #60062]

Language: German

Credits: Produced by Peter Becker, Reiner Ruf, and the Online


Distributed Proofreading Team at http://www.pgdp.net
(This
file was produced from images generously made
available
by The Internet Archive)

*** START OF THE PROJECT GUTENBERG EBOOK DIE


FRAUENFRAGE IM MITTELALTER ***
Anmerkungen zur Transkription
Der vorliegende Text wurde anhand der 1910 erschienenen Buchausgabe so weit wie
möglich originalgetreu wiedergegeben. Typographische Fehler wurden stillschweigend
korrigiert. Ungewöhnliche und heute nicht mehr gebräuchliche Schreibweisen bleiben
gegenüber dem Original unverändert; fremdsprachliche Begriffe wurden nicht korrigiert.
Umlaute in Großbuchstaben (Ä, Ö, Ü) werden, abgesehen von der Titelseite, als deren
Umschreibungen (Ae, Oe, Ue) wiedergegeben. Die Verwendung des ‚scharfen S‘ (ß)
entspricht nicht in allen Fällen den heutigen Rechtschreibgewohnheiten.
DIE FRAUENFRAGE
IM
MITTELALTER

VON

KARL BÜCHER.

ZWEITE VERBESSERTE AUFLAGE.

T Ü B IN G E N
VERLAG DER H. L A U P P’SCHEN BUCHHANDLUNG
1910.
Alle Rechte vorbehalten.

Druck von H. Laupp jr in Tübingen.


FRAU
LINA LUDWIG

GEWIDMET.
Das Beste, was Frauen uns geben, können wir niemals
wiedergeben, und wenn ich dieses Büchlein Dir, der lieben guten
Mama, zueigne, so weiss ich, dass damit die Dankesschuld nicht
abgetragen werden kann, zu der ich mich bekennen muss. Aber
vielleicht ist es Dir doch eine Freude, dadurch an die Zeit erinnert zu
werden, wo sich auf dem Frankfurter Stadtarchiv mir die Gedanken,
die es enthält, zusammenfügten und ich an so manchem schönen
Sonntag bei Euch in Heppenheim ausspannen durfte.
Ausgesprochen wurden diese Gedanken zuerst in einem Vortrage,
den ich am 28. März 1882 im Liebigschen Hörsaale zu München vor
gebildeten Frauen und Männern gehalten habe. Aus dem Kreise der
Zuhörer sahen damals zwei freundliche Augen zu mir empor, die
seitdem meinen Lebensweg erhellten und die jetzt erloschen sind.
Du wirst es vor allen verstehen, dass ich mich lange nicht
entschliessen konnte, das Büchlein, das damals gedruckt wurde, zu
erneuern, als es vergriffen war. Wenn ich es jetzt dennoch tue, so
bin ich nicht der Versuchung erlegen, was ich einst in keckem
Jugendmute hingestellt hatte, mit altem, bedächtigem Kopfe
umzumodeln. Die Schrift scheint doch manchem so, wie sie ist, lieb
geworden zu sein, und wenn ich heute vielleicht auch vieles anders
sagen würde, in ihren tatsächlichen Feststellungen hat sie vor der
Kritik bestehen können. Die Verbesserungen der neuen Auflage
beschränken sich deshalb auf kleinere Berichtigungen und Zusätze
und auf eine grössere Aenderung am Schlusse, zu der die Ergebnisse
der Berufszählung von 1907 Anlass gaben. Ausserdem sind in den
Anmerkungen einige genauere Belege gegeben, ohne dass
Vollständigkeit der Literaturangaben erstrebt wurde. Eine gelehrte
Abhandlung sollte mein Vortrag nicht werden.
Eine neue Zugabe ist das Bildchen auf Umschlag und Einband. Es
stellt eine der Hilfsarbeiterinnen des Frankfurter Wollenhandwerks,
wenn nicht alles trügt, in Bekinentracht dar, entworfen von einem
Frankfurter Schreiber, der das Bedebuch von 1405 mit lustigen
Federzeichnungen versehen hat. Das Bildchen steht bei der
Lindheimer Gasse, die im damaligen Weberviertel der Altstadt liegt.
Bei der Härte der mittelalterlichen Bede ist eine amtlich illustrierte
Steuerliste eine so seltsame Erscheinung, dass ihr Urheber
wenigstens in einer kleinen Probe seiner Kunst dem steuergeplagten
XX. Jahrhundert bekannt zu werden verdiente, stünde diese Probe
auch nicht in so enger Beziehung zum Inhalt dieses Büchleins, als es
tatsächlich der Fall ist. Vielleicht kann sie seinen Ernst um ein
Weniges mildern und durch ihr Wirklichkeitsgepräge den Irrtümern,
deren es immer noch genug enthalten wird, die freundliche
Nachsicht erwirken, deren wir alle bedürfen.

L e i p z i g, den 25. Oktober 1909.

K a r l B ü c h e r.
I n h a l t.
Die Frage 1. — Ihr zwiespältiges Wesen 2. — Ihre
statistische Wurzel 3. — Das Zahlenverhältnis der
Geschlechter im Mittelalter 5. — Ursachen des grossen
Frauenüberschusses 7. Verschärfung durch
Ehebeschränkungen 9. — Wirtschaftliche Stellung der Frau im
deutschen Altertum 10. — Berufsbildung und Entlastung der
Frauen 12. — Angeblicher Ausschluss von zünftiger
Erwerbstätigkeit 13. — Tatsächliches Verhältnis 15, — in der
Textilindustrie 16, in der Schneiderei 18, — in anderen
zünftigen Gewerben 19, — in nicht zünftigen Berufen 20. —
Versorgungsanstalten: a) Klöster 24; — b) Leibrentenkauf 26;
— c) Samenungen 27; — d) Gotteshäuser 32. Statistisches
34. Statuten 35. Tätigkeit der Bekinen 36.
Aufnahmebedingungen 38. Lebensweise 38. Religiöse
Stellung 40. Entartung 41. — Soziale Stellung der Frauen im
Mittelalter 43. — Gegensätze 45. — Fahrende Frauen 48. —
Die gemeinen Frauen in den Städten 55. Frauenhäuser 56.
Sittenpolizei 60. Eingreifen der Kirche 61. Reuerinnen 62.
Rettungshäuser 63. — Rückblick 66. Wandlung seit der
Reformation 67. — Die heutige Frauenfrage 71. —
Anmerkungen 76.
D ie »Frauenfrage« bildet nach allgemeiner Annahme eine
Zeitfrage von so eigenartig modernem Charakter, dass es von
vornherein fraglich erscheinen könnte, ob man berechtigt sei,
diesen Ausdruck auch auf Erscheinungen der Vergangenheit
anzuwenden. Wenn wir aber überall da von »Fragen« reden, wo wir
die vorhandenen Zustände in einem auffälligen Widerspruche sehen
zu dem, was Vernunft und Gerechtigkeit fordern, so wird es wohl
kaum noch einem Zweifel unterliegen, dass wir auch von Fragen der
Vergangenheit sprechen dürfen, wo wir immer derartige
Widersprüche zwischen dem, was w a r, und dem, was hätte sein
sollen, entdecken. Es ist dabei ziemlich gleichgültig, ob die
tatsächlich vorhandenen Widersprüche als »Fragen« in das
Bewusstsein der Zeitgenossen getreten sind; es genügt vollständig,
wenn ein derartiger Widerspruch nachgewiesen werden kann, oder
wenn sich Versuche und Anstalten zu seiner Beseitigung erkennen
lassen. Oder wollte etwa jemand leugnen, dass die moderne
Frauenfrage lange vor der Zeit schon existiert hat, wo sie anfing, in
populären Vorträgen, auf »Frauentagen« oder bei ästhetischen
Teegesellschaften verhandelt zu werden?

Wenn ich in diesem Sinne von einer Frauenfrage im Mittelalter


sprechen will, so bin ich weit davon entfernt, mich auf den
Standpunkt derjenigen zu stellen, welche die gesamte rechtliche,
politische und soziale Stellung der Frau im Widerspruch finden mit
den Forderungen der Vernunft und Gerechtigkeit. Von diesem
Standpunkte aus gab es sicherlich im Mittelalter weit, weit mehr zu
»fragen« und zu wünschen als heutzutage. Ich denke mich vielmehr
auf jenen engeren Teil der Frauenfrage zu beschränken, den man
vielleicht richtiger als »Frauene r w e r b sfrage« bezeichnen würde.
Freilich hat auch noch in diesem engeren Sinne heute die
Frauenfrage eine doppelte Seite. Sie stellt sich dar einerseits als
Frauenschutzfrage mit Bezug auf die zahlreichen weiblichen Arbeiter
der Industrie, anderseits als Frage der Erweiterung des
Erwerbsgebiets der Frauen für diejenigen weiblichen Glieder der
gebildeten Klasse, welche aus irgend einem Grunde ausserhalb der
natürlichen Tätigkeitssphäre ihres Geschlechtes in der Wirtschaft
Verwendung suchen.
Welche von diesen beiden Seiten der Frauenerwerbsfrage man
nun auch ins Auge fassen mag, immer wird man darauf
zurückgeführt, die W u r z e l derselben zu suchen in der Tatsache,
dass gegenwärtig ein ansehnlicher Teil der Frauen innerhalb der
Familie nicht diejenige Versorgungsgelegenheit findet, die wir ihm
aus allgemeinen Gründen wünschen müssen. Diese Tatsache beruht
in erster Linie auf einem statistischen Missverhältnis, welches
obwaltet zwischen der Zahl der heiratsfähigen Frauen und Männer,
sodann aber auf einer entweder notwendigen oder freiwilligen
Enthaltung von der Ehe auf Seiten eines Teils der heiratsfähigen
Männer.

Was zunächst jenes statistische Missverhältnis betrifft, so ist es


eine bekannte Tatsache, dass fast in allen europäischen Staaten
unter den Neugeborenen die Zahl der Knaben überwiegt, dass aber
durch rasches Absterben der männlichen Kinder das Zahlenverhältnis
zwischen beiden Geschlechtern bis etwa zum 17. oder 18. Jahre sich
ausgleicht. Wo nun eine Bevölkerung weiterhin nur natürlichen
Einflüssen ausgesetzt ist, d. h. wo die Verminderung der
Geschlechter nur durch Absterben erfolgt, da kann sich das
Zahlenverhältnis derselben etwa vom 18. bis zum 30. Jahre, also
dem eigentlichen Heiratsalter, im Gleichgewicht erhalten. Es würde
bei rechtzeitiger Verheiratung jede Frau einen Mann bekommen
können. Vom 30. Jahre ab gewinnt überall das weibliche Geschlecht
ein Uebergewicht und steigert dasselbe von Jahrzehnt zu Jahrzehnt,
so dass in den höchsten Altersstufen auf 10 Männer durchschnittlich
14–20 Frauen zu kommen pflegen.
So gestaltet sich das Verhältnis der Geschlechter unter rein
n a t ü r l i c h e n E i n f l ü s s e n. Allein diese natürlichen Einflüsse
gelangen in vielen Staaten nicht zu ungestörter Wirksamkeit. Kriege
und Auswanderung, sowie die nachteiligen Folgen mancher
Berufstätigkeiten verringern die Zahl der Männer schon zwischen
dem 18. und 30. Jahre so stark, dass fast plötzlich um das 20. Jahr
das anfängliche Uebergewicht des männlichen Geschlechts in ein
Uebergewicht des weiblichen Geschlechtes umschlägt. Insbesondere
ungünstig prägen sich die Ergebnisse der angedeuteten nachteiligen
Einwirkungen in der Geschlechtsgliederung der deutschen
Bevölkerung aus. Von den Altersstufen zwischen 20 und 25 Jahren
kommen im Deutschen Reiche nach der Zählung von 1900 auf 1000
Männer schon 1012 Frauen; im Alter von über 20 Jahren überhaupt
auf 1000 Männer 1064 Frauen. Noch ungünstiger gestaltet sich diese
Betrachtung, wenn wir berücksichtigen, dass normaler Weise das
Heiratsalter des Mannes um etwa fünf Jahre höher ist, als das der
Frau. Stellen wir demgemäß die Männer im Alter von 25–30 Jahren
den Frauen im Alter von 20–25 Jahren gegenüber, so erhalten wir
für die deutsche Bevölkerung auf je 1000 Männer 1105 Frauen.
Es kann demnach ein beträchtlicher Teil der heiratsfähigen
Frauen unter keinen Umständen heute zur Verehelichung gelangen,
selbst den Fall vorausgesetzt, dass alle Männer heiraten wollten und
könnten. Dieser Fall trifft nun aber bekanntlich nicht zu. Ein
ansehnlicher Teil der Männer (in ganz Deutschland gegen 10%)
bleibt unvermählt. Es ist klar, dass beide Umstände, der statistische
Frauenüberschuss und das soziale Uebel der männlichen
Ehelosigkeit, in ihrem Zusammenwirken einen beträchtlichen Teil der
unverheiratet bleibenden Frauen auf eine Existenz durch eigene
Erwerbsarbeit hinweisen. Zu einem eigentlichen Erwerbs-Notstande
führen dieselben indes nur in den sogen. höheren Klassen der
Gesellschaft, für die es an passenden Frauenerwerbsgebieten fehlt.
Aus ganz derselben Ursache, wie die moderne
Frauenerwerbsfrage, entspringt die mittelalterliche Frauenfrage, von
der im Folgenden die Rede sein soll. Wenn ich im allgemeinen von
einer m i t t e l a l t e r l i c h e n Frage spreche, so soll damit nicht
gesagt sein, dass das ganze Mittelalter und alle Klassen der
Bevölkerung in die Erörterung hereingezogen werden sollen. Ich
muss mich vielmehr beschränken auf die Zeit und die Teile der
Bevölkerung, für welche uns allein Quellen über diese Dinge fliessen,
auf die deutschen Städte von der Mitte des XIII. bis zum Ausgange
des XV. Jahrhunderts.

Statistische Ermittelungen, welche über drei der bedeutendsten


mittelalterlichen Städte Deutschlands angestellt werden konnten[1],
haben übereinstimmend einen so bedeutenden Ueberschuss der
erwachsenen weiblichen über die gleichalterige männliche
Bevölkerung ergeben, dass man mit Notwendigkeit auf die
Vermutung geführt wird, es müsse die Frauenfrage im städtischen
Leben der beiden letzten Jahrhunderte des Mittelalters weit schärfer
und brennender aufgetreten sein als heutzutage. Eine zuverlässige
Zählung der Nürnberger Bevölkerung, welche am Ende des Jahres
1449 vorgenommen wurde, ergab unter der bürgerlichen
Bevölkerung auf 1000 erwachsene Personen männlichen Geschlechts
1168 Personen weiblichen Geschlechts. Aber nicht bloss in den
bürgerlichen Familien, sondern auch unter der dienenden Klasse
(den Knechten, Handwerksgesellen und Mägden) überwog das
weibliche Geschlecht. Rechnen wir diese mit der bürgerlichen
Bevölkerung zusammen, so kamen gar auf 1000 männliche Personen
1207 weibliche. In Basel scheint um 1454 das Verhältnis ähnlich
gewesen zu sein. In den beiden Kirchspielen St. Alban und St.
Leonhard trafen damals auf 1000 männliche Personen über 14
Jahren 1246 weibliche Personen der gleichen Altersstufen. Eine
Zählung endlich, welche die grössere Hälfte der erwachsenen
Bevölkerung von Frankfurt a. M. im Jahre 1385 umfasst, ergab 1536
männliche und 1689 weibliche Personen oder auf 1000 Männer rund
1100 Frauen. Diese letzte Ziffer ist eine Minimalziffer; es lässt sich
mit guten Gründen wahrscheinlich machen, dass der
Frauenüberschuss in Frankfurt a. M. im Jahre 1385 noch weit
beträchtlicher gewesen ist.
Diese Zahlen reden jedenfalls eine sehr deutliche Sprache; ihr
Gewicht wird indess noch verstärkt durch eine Reihe von
Beobachtungen, von denen ich hier nur e i n e kurz mitteilen will. Das
Frankfurter Stadtarchiv besitzt noch heute einen grossen Teil der
Listen, welche über die Erhebung der Vermögenssteuer (Bede) im
XIV. und XV. Jahrhundert geführt wurden. Diese Erhebung erfolgte
ebenso wie die Einschätzung durch den Rundgang einer Kommission
von Haus zu Haus. Das Vermögen wurde nach eidlicher Versicherung
der Steuerpflichtigen zur Steuer veranlagt und die Hausbesitzer
waren bei schwerer Strafe gehalten, alle in ihren Häusern
wohnenden Personen mit eigenem Vermögen anzugeben. Dieses
Verfahren bietet ohne Zweifel die Gewähr grosser Genauigkeit mit
Bezug auf die Ermittlung der Steuerpflichtigen. Da ist es nun
überaus auffallend, wie häufig unter den Steuerzahlern
alleinstehende Frauen auftreten. Nach zahlreichen statistischen
Ermittlungen[2], welche die Jahre 1354–1510 umfassen, machten in
diesem Zeitraum die Frauen den s e c h s t e n bis den v i e r t e n Teil
aller Steuerpflichtigen aus. Bedenkt man, dass es sich bei diesem
Verhältnis grösstenteils um alleinstehende, selbständige Frauen
handelt, dass die zahlreichen Nonnen, Pfründnerinnen und Bekinen
meist nicht mitgerechnet sind und dass Frauen auch im Mittelalter
viel schwerer zur Selbständigkeit gelangten als die Männer, so erhält
man eine Ahnung davon, wie schneidend das Missverhältnis in der
Zahl beider Geschlechter im bürgerlichen Leben der Städte
hervorgetreten sein muss.

Hier wirft sich zunächst die Frage auf: woher kommt dieser
bedeutende Ueberschuss der erwachsenen weiblichen über die
männliche Bevölkerung? Ich will versuchen, dieselbe mit ein paar
kurzen Andeutungen zu beantworten. Drei Ursachen scheinen mir
besonders in Betracht zu kommen:
1. die zahlreichen Bedrohungen, welchen das männliche Leben in
den mittelalterlichen Städten infolge der fortwährenden Fehden, der
blutigen Bürgerzwiste und der gefahrvollen Handelsreisen ausgesetzt
war;
2. die grössere Sterblichkeit der Männer bei den oft sich
wiederholenden pestartigen Krankheiten. Mindestens weisen auf
eine derartige Vermutung hin die stärkeren Ziffern für die Frauen,
welche regelmässig nach Pestjahren in den Frankfurter Steuerlisten
auftreten[3];
3. die Unmässigkeit der Männer in jeder Art von Genuss.
Ausserdem ist wohl die Vermutung nicht abzuweisen, dass die
städtische Berufsarbeit in engen, ungesunden Räumen, zwischen
hohen, dicht zusammengerückten Häusermauern bei der
Unvollkommenheit der technischen Hilfsmittel viel mehr aufreibende
Muskelarbeit von den Männern erfordert habe, dass der
Daseinskampf bei dem raschen Wechsel von guten und schlechten
Jahren, von hohen und niederen Lebensmittelpreisen, von
Ueberfluss und Mangel für sie, wenn auch vielleicht im ganzen nicht
schwieriger, so doch unregelmässiger und wechselvoller sich
gestaltet haben müsse als in Zeiten besserer Gesundheitspflege und
ausgebildeten nationalen und internationalen Verkehrs.
Welcher von diesen Entstehungsursachen nun auch der
mittelalterliche Frauenüberschuss vorwiegend zuzuschreiben sein
mag — sicher ist, dass er vorhanden war und dass er in mancherlei
Verhältnissen des sozialen Lebens seinen Ausdruck fand. Sicher ist
auch, dass die dadurch für zahlreiche Frauen gegebene
Unmöglichkeit einer Versorgung in der Ehe zu Uebelständen führte,
die das Mittelalter klar erkannte und auf seine eigene Art zu heilen
suchte.

Ehe wir zur Betrachtung dieser Verhältnisse übergehen, müssen


wir kurz die Frage berühren, wie weit Beschränkungen des Rechts
zur Verehelichung das Uebel noch vermehrten.
Hier tritt zunächst das Cölibat der Geistlichkeit uns entgegen.
Ihre Zahl war allerwärts in den Städten unverhältnismässig gross.
Sie lässt sich in Frankfurt a. M. für das XIV. und XV. Jahrhundert bei
einer Einwohnerzahl von 8000–10000 auf 200–250 Personen
berechnen[4]. Für Lübeck darf man in derselben Zeit 250–300
Weltgeistliche und gegen 100 Klosterbrüder annehmen[5]. In Wismar
belief sich um 1485 die Zahl der Weltgeistlichen auf 150; in
Nürnberg wird 1449 der geistliche Stand auf 446 (einschliesslich der
Dienerschaft) angegeben. Wie ungünstig ihre Ehelosigkeit die
Heiratsziffern des weiblichen Geschlechts in diesen kleinen
Gemeinwesen beeinflussen musste, liegt auf der Hand.
Sodann wirkte die zünftige Ordnung des Gewerbebetriebes
nachteilig auf das Heiratsalter eines grossen Teiles der männlichen
Bevölkerung ein. Die Verehelichung des Handwerkers hing von
seiner Zulassung zur Meisterschaft ab, und diese wieder von
Bedingungen, welche die Angehörigen der Zunftmitglieder
begünstigten[6]. Der Geselle durfte als solcher im allgemeinen nicht
heiraten[7]. Infolge der Schliessung vieler Zünfte, der Beschränkung
der Betriebsstätten und Verkaufsbänke bildete sich deshalb im XIV.
und XV. Jahrhundert ein eigener Gesellenstand, der keine Aussicht
auf Selbständigmachung und Familiengründung hatte. Indessen
zeugen doch die vielfachen Verbote der Zunftstatuten, verheiratete
Gesellen anzunehmen, sowie viele Beispiele der Frankfurter
Steuerlisten dafür, dass Gesellenheiraten nicht eben selten waren.
Auf keinen Fall aber waren sie so leicht und häufig, wie heute die
Ehen der Fabrikarbeiter.

Wenn wir uns nun anschicken, die Frage zu beantworten: w a s


wurde im Mittelalter aus den zahlreichen
Frauen, die ihren »natürlichen Beruf« zu
e r f ü l l e n v e r h i n d e r t w a r e n? so müssen wir uns vor allen
Dingen von der Anschauung los machen, welche den meisten von
uns aus unseren frühesten Schuljahren anklebt. Wir hören da nach
den Schilderungen in Tacitus’ »Germania« von der hohen Achtung,
der fast göttergleichen Verehrung, welche dem Weibe bei den alten
Germanen gezollt wurde; aber wir übersehen nur zu leicht, dass
derselbe Tacitus die Stellung der Frau in der Wirtschaft so
beschreibt, dass wir mit Notwendigkeit auf eine grosse Ueberlastung
des weiblichen Geschlechts schliessen müssen. Der Mann achtet
keine Tätigkeit ausser derjenigen mit dem Schwerte. Träge liegt er
im Frieden auf der Bärenhaut; Schlaf, Trunk und Würfelspiel füllen
seine Zeit. Die Sorge für Feld, Haus und Herd bleibt den Frauen, die
mit den Kindern, den Schwachen und Unfreien die Wirtschaft führen.
Neben der erhaltenden und verwaltenden Tätigkeit des Hauses, die
heutzutage den Frauen hauptsächlich zufällt, hatten sie also auch die
gesamte Gütererzeugung zu bewerkstelligen; oder, um einen
geläufigen Ausdruck zu gebrauchen: die Frau ernährte die ganze
Familie. Sie war Arbeiterin, Wirtschaftsführerin, Haushälterin und
Erzieherin der Kinder zugleich. Die Germanen machten also in ihrer
primitiven Periode keine Ausnahme von der Erwerbsordnung, die wir
noch heute bei Naturvölkern finden.
Dieser Zustand änderte sich nach den grossen Wanderungen, als
in währenden Friedenszeiten und bei wachsender Bevölkerung die
deutschen Männer sich herabliessen, auch den Acker zu bebauen.
Immer aber blieb noch ein grosser Teil der Landwirtschaft,
namentlich die Be- und Verarbeitung vegetabilischer Stoffe, den
Frauen überlassen. Auch als mehr und mehr aus der alten
geschlossenen Hauswirtschaft einzelne Tätigkeiten als Gewerbe sich
absonderten, blieb das Arbeitsgebiet der Frau immer noch sehr
gross, wie wir deutlich aus der Verteilung der Arbeiten in den
grundherrlichen Grosswirtschaften erkennen. Da finden wir unter
den männlichen Leibeigenen freilich schon Müller und Bäcker,
Schneider und Schuster, Grobschmiede und Waffenschmiede; den
Frauen lag aber nicht bloss die Arbeit in Küche und Keller, in Garten
und Stall ob, sondern auch die Besorgung der Gewandung von der
Schafschur und der Flachsbereitung bis zum Weben, Färben,
Zuschneiden, Nähen und Sticken, ferner das Bierbrauen,
Seifensieden, Lichterziehen und eine Menge von anderen
Verrichtungen, die später nach und nach von besonderen
Gewerbetreibenden übernommen wurden[8].
So sehen wir bis in das XIII. Jahrhundert hinein in dem Masse,
als die gewerbliche Berufsbildung fortschritt, eine immer weiter
greifende Entlastung der Frau von schweren körperlichen Arbeiten
eintreten; ihre Tätigkeit beginnt sich auf dasjenige Gebiet zu
beschränken, welches wir als die Haushaltung zu bezeichnen
pflegen. Aber immer war dieses Gebiet noch bedeutend
umfangreicher als heutzutage. Das Spinnen und Bleichen, das
Backen und Bierbrauen wurde auch in den Städten noch vielfach von
den Frauen besorgt; der Schuster und Schneider, der Sattler und der
Bauhandwerker arbeiteten im Hause auf der »Stör«; eine grosse
Anzahl von Produkten, die wir heute fertig zum Verbrauche kaufen,
bedurfte noch der Zurichtung durch die Frauen.
Dies alles weist darauf hin, dass eine grössere Zahl von Frauen in
den mittelalterlichen Haushaltungen verwendet werden konnte, als
dies heute möglich wäre. So mögen vielfach elternlose Mädchen und
verwitwete Frauen in den Familien ihrer näheren oder entfernteren
Verwandten Unterkunft und Beschäftigung gefunden haben; der
Familienzusammenhang war ohnehin damals noch viel stärker als
gegenwärtig. Diejenigen alleinstehenden Frauen dagegen, welche
keinen derartigen Rückhalt besassen, waren allem Anscheine nach in
den Städten sehr übel gebettet. Auf dem Lande mochten
Frauenhände immer in der Wirtschaft erwünscht sein; in den Städten
war die Frau (abgesehen von der Eingehung eines
Dienstbotenverhältnisses) nach der gewöhnlichen Annahme von der
Erwerbsarbeit in den zünftigen Gewerben fast vollständig
ausgeschlossen.

In der Tat wird sich nicht leugnen lassen, dass die gesamte
Stellung der Gewerbe im Mittelalter ein selbständiges Eingreifen der
Frauen in dieses Gebiet grundsätzlich auszuschliessen scheint. Das
Zunftwesen, welchem alle einigermassen entwickelten Gewerbe
unterworfen waren, war seinem innersten Wesen nach auf die
Familie gegründet. Die Zünfte waren nicht bloss gewerbliche
Vereine, sondern Unterabteilungen der Gemeinde mit rechtlichen,
politischen, militärischen und administrativen Aufgaben. Das Recht
zum Gewerbebetrieb schloss die Verpflichtung zum Waffendienst und
zu anderen Leistungen in sich, zu welchen Frauen nicht wohl
herangezogen werden konnten. Bei der Teilnahme an den politischen
Rechten, von der ja die Frauen ausgeschlossen waren, spielten die
Zünfte wieder eine Rolle, welche die Zulassung weiblicher Mitglieder
untunlich zu machen schien.
Adrian Beier[9], der Verfasser des ältesten Kompendiums des
Handwerksrechts, stellt denn auch den Satz auf: das männliche
Geschlecht sei eine der unerlässlichen Grundbedingungen für die
Aufnahme in eine Zunft gewesen. Die ganze gesellschaftliche
Ordnung, meint er, beruhe darauf, dass jedes Geschlecht diejenigen
Geschäfte übernehme, welche seiner Natur am angemessensten
seien, der Mann die Erwerbsarbeit, die Frau die Küche, den
Spinnrocken, die Nadel, die Wäsche; auch das Weben,
Lichtergiessen und Seifensieden solle ihr noch gestattet sein. Das
Mädchen sei zur Ehe bestimmt; man könne nicht wissen, wen es
einmal heiraten werde; eine gelernte Schusterin sei aber dem
Schmiede nichts nütze. Ausserdem könne man nicht allein in der
Lehre lernen; von ungewanderten Junggesellen und gewanderten
Jungfern werde aber beiderseits wenig gehalten. Der Umgang mit
Männern in der Werkstätte sei in sittlicher Hinsicht nicht
ungefährlich. Endlich sei die Zunft eine öffentliche Einrichtung; das
Meisterrecht sei mit staatlichen Leistungen, als Wachen und Gaffen,
verbunden, wozu Weiber nicht taugten.

Trotz dieser anscheinend in der Natur der Sache liegenden


grundsätzlichen Ausschliessung der Frauen wenigstens vom
zünftigen Gewerbebetrieb sehen wir das ganze Mittelalter hindurch
die Frauen vielfach im Gewerbe tätig — ein Beweis, dass eine
derartige Beschäftigung derselben durch die tatsächlichen
Verhältnisse sich als notwendig aufdrängte. Ja wir finden sogar
Frauenarbeit in einer Reihe von Berufsarten, von denen sie
gegenwärtig tatsächlich ausgeschlossen ist.
Ich will hier die Tatsache nicht weiter betonen, dass die Witwe
eines Meisters das Geschäft ihres Mannes forttreiben durfte; das ist
bekannt genug. Ueberdies ist dieses Vorrecht in manchen Gewerben
und Städten zeitlich begrenzt oder an die Bedingung der
Wiederverheiratung mit einem Gesellen des gleichen Handwerks
geknüpft. Ich will auch kein grosses Gewicht darauf legen, dass
Frauen und Töchter, oft auch die Magd eines Handwerkers
demselben im Geschäfte helfen konnten; das liess sich bei aller
Bevormundung, die dem Mittelalter eigen war, so leicht nicht
verbieten. Viel wichtiger erscheint mir, dass Frauen und Mädchen
innerhalb eigener oder fremder Gewerbebetriebe zahlreiche
Verwendung fanden, bald als abhängige Lohnarbeiterinnen, bald
sogar als selbständige Meisterinnen. War das betreffende Gewerbe
zünftig, so konnten hier und da die Frauen in eigenem Namen den
Zünften mit gleichem Rechte wie die Männer angehören; war es
unzünftig, so waren sie selbstverständlich keinerlei Beschränkungen
unterworfen. Endlich finden wir sogar Gewerbe mit zünftiger
Ordnung, die ausschliesslich aus Frauen bestanden.
Natürlich handelt es sich hier zunächst um Gebiete, in welchen
die Frauen von Alters her tätig gewesen waren[10]. Dahin gehört das
ganze Gebiet der Te x t i l i n d u s t r i e. Die Weberei war zwar seit
dem XII. Jahrhundert ein eigenes Gewerbe in Männerhand; indessen
blieben die Vorrichtungsarbeiten, das Wollkämmen, Spinnen,
Garnziehen, Spulen, fast überall noch lange Zeit in den Händen der
Frauen. Wir finden deshalb an vielen Orten ein zahlreiches
weibliches Arbeiterpersonal in der W o l l w e b e r e i: Kämmerinnen,
Spinnerinnen, Spulerinnen, Garnzieherinnen, Nopperinnen — meist
abhängige Lohnarbeiterinnen nach Art unserer Heim- oder
Fabrikarbeiterinnen. In Frankfurt a. M. standen sie unter der Aufsicht
von zwei Mitgliedern des Rats. Ihre Tätigkeit war an sehr
eingehende Vorschriften gebunden, und wir haben in der Frankfurter
Weberordnung von 1377 wohl das älteste Beispiel einer Regulierung
der Frauenarbeit durch die öffentliche Gewalt[11]. Auch als
Weberinnen finden wir die Frauen nicht selten tätig, und hier nicht
bloss im Lohndienst, sondern auch als selbständige Mitglieder der
Zunft. So in Bremen, in Köln, in Dortmund, in Danzig, in den
schlesischen Städten, in Speier, Strassburg, Ulm, München. »Wer
Webermeister oder Meisterin ist«, heisst es in einer Münchener
Ratsverordnung aus dem XIV. Jahrhundert, »der soll haben, ob er
will, einen Lernknecht und eine Lerndirne und nicht mehr«.
Was die L e i n e n w e b e r e i betrifft, so ist hier eine vielseitige
selbständige Beteiligung der Frauen am Handwerk um so weniger zu
bezweifeln, als in einem grossen Teile von Deutschland auf dem
Lande die Frauen bis ins XIX. Jahrhundert hinein Leinwand gewebt
haben. In Hamburg konnten Frauen in der Leinenweberei beim
sogen. »schmalen Werke« selbständig werden (1375); in Strassburg
wurden die Schleier- und Leinenweberinnen (1430) zu den
Zunftlasten herangezogen; in Frankfurt a. M. finden wir ebenfalls
selbständig steuernde »Lineberssen« (1428), ohne dass es freilich
ersichtlich wäre, ob dieselben als Meisterinnen oder als
Lohnarbeiterinnen betrachtet werden müssen. Die Schleierweberei
und Schleierwäscherei ist dort ganz in den Händen der Frauen;
ebenso scheinen sie die S c h n u r- und B o r t e nwirkerei im XIV. und
XV. Jahrhundert allein betrieben zu haben. In den schlesischen
Städten bildete das Garnziehen ein eigenes Gewerbe, an dem
Männer und Frauen beteiligt waren. In Köln bestand eine eigene
Zunft von Garnmacherinnen; sie mussten sechs Jahre lernen und
keine Meisterin durfte mehr als drei Mägde oder Lohnwerkerinnen
halten. In der zu Anfang des XV. Jahrhunderts aufgekommenen
B a r c h e n t w e b e r e i haben dagegen weibliche Arbeitskräfte bis
jetzt nicht nachgewiesen werden können.
Etwas anders lagen die Verhältnisse im S c h n e i d e r g e w e r b e.
Hier konnten freilich die Frauen auch das Recht hergebrachten
Besitzes für sich geltend machen, da sie in älterer Zeit nicht bloss die
eigenen Kleider, sondern auch diejenigen der Männer gefertigt
hatten. Lesen wir doch noch im Nibelungenliede, dass Chriemhilde
mit ihren Mägden den ausziehenden Recken das Gewand bereitet.
Aber beim ersten Auftreten der Schneiderzünfte arbeiteten die
Schneider nicht bloss alle Arten von Männerkleidern, sondern auch
die Frauengewänder, ja sie hatten selbst die ganze
Weisszeugnäherei[12]. Indessen bemerken wir doch auch hier eine
rege Frauentätigkeit. Nicht nur dass im Schneidergewerbe Frauen
und Töchter der Zunftmeister in weiterem Masse als in anderen
Handwerken mitarbeiteten; an nicht wenigen Orten konnten auch
Frauen als selbständige Meisterinnen in die Zunft treten, ja sie
durften selbst Arbeiterinnen haben und Lehrmädchen annehmen. In
Frankfurt und Mainz, wie wohl in allen mittelrheinischen Städten,
suchte man ihre Aufnahme in die Zunft durch Festsetzung geringerer
Aufnahmegebühren für Frauen zu erleichtern[13]. Erst im XV.
Jahrhundert entstanden in den rheinischen Städten sehr langwierige
Streitigkeiten zwischen den Schneidern und den Näherinnen, die
schliesslich damit endeten, dass das Gebiet der letzteren auf
diejenigen Arten des Nadelwerks beschränkt wurde, welche noch
heute den Frauen eigen sind.
Noch eine Reihe von anderen Handwerken lässt sich nachweisen,
die im Mittelalter Frauen im Amte hatten. Es würde indes zu weit
führen, hier auf die Einzelheiten einzugehen. Ich begnüge mich
deshalb damit, hier kurz die zünftigen Gewerbe zu nennen, bei
welchen weibliche Arbeitskräfte Verwendung fanden. Es sind: die
Kürschner (in Frankfurt und in den schlesischen Städten), die Bäcker
(in den mittelrheinischen Städten), Wappensticker, Gürtler (Köln,
Strassburg), die Riemenschneider (Bremen), die Paternostermacher
(Lübeck), die Tuchscherer (Frankfurt), die Lohgerber (Nürnberg), die
Goldspinner und Goldschläger (in Köln). In den Statuten der
letzteren hiess es: »Kein Goldschläger, dessen Frau Goldspinnerin ist,
darf mehr als drei Töchter zum Goldspinnen haben; die
Goldspinnerin dagegen, deren Mann nicht Goldschläger ist, darf vier
Töchter haben und nicht mehr, dass sie ihr Gold spinnen.« An der
Spitze beider Gewerbe stand je ein Meister und eine Meisterin,
welche das Werk des Amtes zu besehen und zu prüfen hatten.
Natürlich konnte es sich hier überall nur um Gewerbe handeln,
welche der Natur ihres Betriebes nach für das zarte Geschlecht
geeignet waren; denn es war stehender Grundsatz des alten
Handwerksrechtes, dass niemand in der Zunft sein solle, der das
Gewerbe nicht mit eigener Hand treiben könne.
Im ganzen können wir sonach behaupten, dass im Mittelalter die
Frauen von keinem Gewerbe ausgeschlossen waren, für das ihre
Kräfte ausreichten. Sie waren berechtigt, Handwerke
ordnungsmässig zu lernen, sie als Gehilfinnen, ja selbst als
Meisterinnen zu treiben[14]. Indessen bemerken wir schon frühe die
Tendenz, die Frauenarbeit mehr und mehr zurückzudrängen.
Dieselbe wendet sich zunächst gegen die Meisterswitwen, deren
Recht auf eine gewisse Zeit (Jahr und Tag) beschränkt oder an
bestimmte Bedingungen geknüpft wird. Sodann gegen das
Mitarbeiten der Mägde und der weiblichen Familienglieder, endlich
auch gegen die selbständige Tätigkeit der Frauen in den Zünften.
Die Gesellenverbände fangen an, sich zu weigern, neben den
weiblichen Arbeitern zu dienen; die Meister klagen über
Beeinträchtigung ihres Nahrungsstandes. Im XVI. Jahrhundert leistet
noch die öffentliche Gewalt diesen engherzigen Bestrebungen
Widerstand, im XVII. Jahrhundert erlahmt sie darin völlig, und so
kommt es, dass nur in vereinzelten Fällen bis ins XVIII. Jahrhundert
die Frauenarbeit im Handwerk sich erhalten hat[15].
Was die nichtzünftigen Gewerbe betrifft, so unterlag in diesen die
Frauenarbeit wohl nie irgend welchen Beschränkungen. Nur beim
stehenden Kleinhandel, der jetzt so vielen Frauen Selbständigkeit
und Unterhalt gewährt, scheint die Marktpolizei vielfach zu
Ungunsten der Frauen eingegriffen zu haben, während sie beim
Hausierhandel anscheinend stärker vertreten waren. So wird bei den
Gewandschneidern und Fischhocken in Frankfurt der Verkauf durch
die Frauen verboten, mit Ausnahme des Falles, wo der Mann
abwesend ist; in München sollte keines Fleischhackers oder Metzgers
Weib in der Bank stehen und Fleisch verkaufen[16]; in Passau durfte
die Frau eines Salzhändlers nur wenn der Mann krank war dessen
Geschäft versehen. Die Hocken und Viktualienhändler sind fast
allerwärts Männer; nur in Ulm bilden die Käuflerinnen ein eigenes
weibliches Gewerbe[17].
Es wird vielleicht zur Veranschaulichung des Gesagten beitragen,
wenn hier noch kurz die Berufsarten namhaft gemacht werden, bei
welchen ich in Frankfurter Urkunden aus der Zeit zwischen 1320 und
1500 Frauen beschäftigt gefunden habe. Sie lassen sich in vier
Gruppen zerlegen. In der ersten, welche die Berufe umfasst, für die
nur weibliche Namen vorkommen, ergaben sich 65
Beschäftigungsarten. Die zweite enthält die Berufe, in welchen die
Frauen überwiegen; ihrer sind freilich nur 17. Aber ihnen stehen 38
Berufe gegenüber, in denen Männer und Frauen etwa gleich stark
sich vertreten fanden und 81, in denen der Umfang ihrer Tätigkeit
hinter derjenigen der Männer zurückblieb[18]. Das ergibt rund 200
Berufsarten mit Frauenarbeit. Unter ihnen treten allerdings die schon
erwähnten Hilfsgewerbe der Textilindustrie am stärksten hervor. Die
Verfertigung von Schnüren und Bändeln, Hüllen und Schleiern,
Knöpfen und Quasten ist ganz in ihren Händen. Wie an der
Schneiderei beteiligen sie sich an der Kürschnerei, Handschuh- und
Hutmacherei, verfertigen Beutel und Taschen, lederne Brustflecke
und Sporleder. Selbst bis in die kleine Holz- und Metallindustrie reicht
ihre Tätigkeit: Nadeln und Schnallen, Ringe und Golddraht, Besen
und Bürsten, Matten und Körbe, Rosenkränze und Holzschüsseln
gehen aus ihren Händen hervor. Die Feinbäckerei scheint
vorzugsweise ihnen obzuliegen; fast ausschliesslich beherrschen sie
die Bierbrauerei und die Herstellung von Kerzen und Seife. In dem
außerordentlich spezialisierten Kleinhandel überwiegen sie: Obst,
Butter, Hühner, Eier, Häringe, Milch, Käse, Mehl, Salz, Oel, Senf,
Essig, Federn, Garn, Sämereien werden fast nur von ihnen
vertrieben. Das Hockenwerk und das Trödelgeschäft, ja selbst der
sehr entwickelte Handel mit Hafer und Heu sind vielfach in den
Händen von Frauen. Sie treiben sich unter den Abenteurern und
Gauklern hausierend umher. In den Badstuben Frankfurts bedienten
30 bis 40 Bademägde; ja man konnte sich zuweilen selbst von zarten
Händen rasieren und immer in den Weinschenken sich von
weiblichen Musikanten, wie Lauten- und Zimbelschlägerinnen,
Pfeiferinnen, Fiedlerinnen und Schellenträgerinnen, etwas vorspielen
lassen. Abschreiberinnen und Briefdruckerinnen kommen wenigstens
vereinzelt vor; schon 1346 wird eine Malerin und von 1484 ab häufig
Juttchen die Puppenmalerin genannt. Ja selbst im städtischen Dienst
werden Frauen verwendet, nicht bloss als Hebammen und
Krankenpflegerinnen, sondern selbst als Schlaghüterinnen,
Pförtnerinnen, Turmwächterinnen[19], Zöllnerinnen und beim Hüten
des Viehs. Unter den 11 Personen, welchen 1368 der Rat das
Geldwechselgeschäft übertragen hatte, werden nicht weniger als 6
Frauen genannt; wir begegnen einer Frau als Pächterin des
Leinwandzolles und einer anderen als Aufseherin und Einnehmerin in
der Stadtwage[20]. Im XIV. Jahrhundert findet sich häufig eine
weltliche Schulmeisterin, Lyse, die die Kinde leret, auch kurz lerern
oder kindelern — vielleicht eine mittelalterliche Kindergärtnerin. Aber
1361 wird zugleich mit ihr Katherine schulmeistern genannt — ein
Beweis, dass keine vereinzelte Erscheinung vorliegt. In Lübeck war
es von alters üblich, dass ehrbare Frauen kleine Mädchen schreiben
und lesen lehren durften. Ferner hat es während des ganzen XIV.
und XV. Jahrhunderts in den meisten Städten weibliche Aerzte
gegeben. Zwischen 1389 und 1497 konnten in Frankfurt nicht
weniger als 15 Aerztinnen mit Namen nachgewiesen werden, unter
diesen 4 Judenärztinnen und 3 Augenärztinnen[21]. Verschiedenen
von ihnen werden sogar wegen Heilung städtischer Bediensteten
Ehrungen und Steuererleichterungen vom Rate bewilligt. Endlich war
es nichts seltenes, dass in unsicheren Zeiten, wenn raubende und
plündernde Haufen in der Umgegend sich sammelten, Frauen im
Kundschafterdienst verwendet wurden[22]. Einer der höchsten
Träume unserer modernen Emanzipationsfreunde war somit im
Mittelalter schon einmal volle Wirklichkeit.

Wie ausgedehnt man sich auch das Gebiet selbständiger


Erwerbstätigkeit vorstellen mag, welches den Frauen im Mittelalter
zugänglich war — auf keinen Fall reichte es hin, sämtliche des
männlichen Schutzes entbehrenden Frauen zu beschäftigen. Für die
jüngeren bot hier wohl der Gesindedienst, der im Mittelalter
verhältnismässig mehr Kräfte erforderte als heute, Arbeit und Brot;
auch gab es ausser der Weberei und der Bekleidungsindustrie noch
andere Handwerke, die weibliche Arbeitskräfte beschäftigten. So in
Lübeck die Nadler, Maler, Bernsteindreher und Bader. Aber die
Weiberlöhne[23] waren auch im Mittelalter überaus niedrig, wohl
wegen des grossen Zudrangs von Arbeiterinnen zu den erwähnten
industriellen Beschäftigungen. Viele waren deshalb gezwungen, in
anderer Weise ein Unterkommen zu suchen.
Hier bot sich als nächste Zuflucht das K l o s t e r, und es ist in der
Tat auffallend, wie sehr in der zweiten Hälfte des XIII. und im XIV.
Jahrhundert allerwärts in den deutschen Städten die Frauenklöster
zunahmen. In diese Zeit fällt der kräftige Impuls, der von den
Bettelorden ausging, in deren Klientel sich fast alle neu gegründeten
Nonnenklöster begaben. Wenn die älteren Frauenklöster und Stifter
Versorgungsanstalten für die Töchter des ärmeren Adels bildeten, so
boten diese neueren eine Unterkunft für die überschüssige
Frauenwelt des höheren Bürgerstandes und der Geschlechter, von
denen manche Novizen auch an die Klöster einer näheren oder
entfernteren Umgebung lieferten. Wen getäuschte Hoffnungen,
überstandene Angst und Kümmernis, der Verlust von Gatten, Eltern,
Geschwistern, die Furcht vor einer rohen, gewalttätigen Welt oder
tiefinnerstes religiöses Bedürfnis trieben, den Schleier zu nehmen,
der fand, wenn das nötige Einkaufsgeld vorhanden war, hier ein
beschauliches Dasein, Gelegenheit zu geistiger Ausbildung und zu
stiller Tätigkeit im Dienste der Erziehung und in weiblichen
Handarbeiten, äussersten Falles wenigstens Unterhaltung und
mancherlei Kurzweil. Sehr anschaulich schildert ein mittelalterliches
Gedicht[24] die Tätigkeit in den Nonnenklöstern:

»Da waren vrouwen inne, die dienten Got mit sinne:


Die alten und die jungen lasen unde sungen
Ze ieslicher im tage zit, si dienten Gote ze wider strit,
So si aller beste kunden, und muosen under stunden,
So si niht solden s i n g e n, n a e n oder b o r t e n d r i n g e n
Oder w ü r k e n an der r a m; ieglichiu wold’ des haben scham,
Die da muezik waere beliben; sie e n t w u r f e n oder s c h r i b e n.
Es l e r t die s c h u o l e m e i s t e r i n
Die jungen s i n g e n und l e s e n, wie sie mit zühten solden wesen,
Beide s p r e c h e n unde g e n, ze kore n i g e n unde s t e n.«

You might also like